MAUI iOS: Keyboard hides the entry on iOS platform.

Sreenivasan, Sreejith 1,025 Reputation points
2026-09-07T11:11:17.2133333+00:00

I have and entry like below:

<ctrl:BorderLessEntry x:Name="_borderlessEntry" Text="{Binding Text, Source={x:Reference this_flow_text}}" 
                   BackgroundColor="Transparent" Placeholder="{Binding Title, Source={x:Reference this_flow_text}}"
                   Style="{Binding TextStyle, Source={x:Reference this_flow_text}}" 
                   Keyboard="{Binding Keyboard, Source={x:Reference this_flow_text}}">
                <ctrl:BorderLessEntry.Margin>
                    <OnPlatform x:TypeArguments="Thickness">
                        <On Platform="iOS" Value="10,0,20,0" />
                        <On Platform="Android, WinPhone, Windows" Value="10,0" />
                    </OnPlatform>
                </ctrl:BorderLessEntry.Margin>
            </ctrl:BorderLessEntry>

When I tap on it the keyboard hides the entry on iOS platform. I tried couple of workarounds to fix it, but nothing works so far.

Below is its full XAML code: Here FlowFieldGroup is a ContentView.

<?xml version="1.0" encoding="UTF-8"?>
<ctrl:FlowFieldGroup 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:ctrl="clr-namespace:Xamarin.Forms.Clinical6.UI.Controls" 
    x:Class="Xamarin.Forms.Clinical6.UI.Controls.FlowFieldText"
    x:Name="this_flow_text">
    <ctrl:FlowFieldGroup.Editor>
        <Grid VerticalOptions="FillAndExpand" Margin="10,10,10,0" Padding="0" HorizontalOptions="FillAndExpand">
            <Grid.RowDefinitions>
                <RowDefinition Height="50" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Frame x:Name="_backgroundFrame" Grid.Row="0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" 
                   BackgroundColor="White" HasShadow="false" BorderColor="#B8B8B8" CornerRadius="3">
            </Frame>
            <Label Grid.Row="0" Text="{Binding TitleHolder, Source={x:Reference this_flow_text}}" 
                   Style="{StaticResource flowText}" Margin="10,-8,0,0"
                   IsVisible="false" x:Name="_holderTitleLabel"
                   FontSize="12" BackgroundColor="White" HeightRequest="15"
                   HorizontalOptions="Start" VerticalOptions="Start">
            </Label>
            <ctrl:BorderLessEntry x:Name="_borderlessEntry" Text="{Binding Text, Source={x:Reference this_flow_text}}" 
                   BackgroundColor="Transparent" Placeholder="{Binding Title, Source={x:Reference this_flow_text}}"
                   Style="{Binding TextStyle, Source={x:Reference this_flow_text}}" 
                   Keyboard="{Binding Keyboard, Source={x:Reference this_flow_text}}">
                <ctrl:BorderLessEntry.Margin>
                    <OnPlatform x:TypeArguments="Thickness">
                        <On Platform="iOS" Value="10,0,20,0" />
                        <On Platform="Android, WinPhone, Windows" Value="10,0" />
                    </OnPlatform>
                </ctrl:BorderLessEntry.Margin>
            </ctrl:BorderLessEntry>

            <Label VerticalOptions="Start" Grid.Row="1"
                   HorizontalOptions="StartAndExpand" Margin="2,0,0,0"
                   Style="{StaticResource loginTextThird}"  
                   HorizontalTextAlignment="Start" x:Name="_errorLabel"
                   TextColor="{StaticResource ErrorTextColor}" IsVisible="false" />
        </Grid>
    </ctrl:FlowFieldGroup.Editor>
</ctrl:FlowFieldGroup>

Let me know what other details you need to debug this issue?

Developer technologies | .NET | .NET Multi-platform App UI
0 comments No comments

2 answers

Sort by: Most helpful
  1. Nguyen Dam (WICLOUD CORPORATION) 160 Reputation points Microsoft External Staff Moderator
    2026-09-08T08:39:09.77+00:00

    Hello @Sreenivasan, Sreejith , and thank you for providing the XAML code.

    We understand how disruptive this keyboard behavior can be, and we appreciate your patience while we narrow down the cause. Since the behavior may depend on both the control implementation and its containing page layout, we would like to better understand how the control is positioned and handled within the complete page. This will help us identify the source of the behavior and focus the investigation on the appropriate area.

    Please provide the complete containing page layout where the control is used (including all parent containers up to the ContentPage), and we can investigate the behavior further. In particular, we need to see:

    • Where FlowFieldText is positioned on the page
    • Whether it is inside a ScrollView or another scrollable container
    • Whether the issue occurs in portrait, landscape, or both
    • Whether other content prevents the page from moving when the keyboard opens
    • Any code that moves or scrolls the field when it receives focus

    Hope the answer is helpful enough for you. And if it is any helpful, please consider following the guidance to provide feedback.

    Was this answer helpful?


  2. AI answer

    2026-09-07T11:11:37.3066667+00:00

    On iOS, Entry fields are expected to scroll into view automatically when the soft keyboard would cover them. In .NET MAUI, pages automatically scroll so the text field stays above the keyboard.

    For this layout, the most relevant fixes are:

    1. Put the input inside a keyboard-aware container.
      • Set SafeAreaEdges="All" on the page or wrapping layout if the whole page should avoid system bars and the keyboard.
      • For bottom input layouts, wrap the content in a layout such as Grid or VerticalStackLayout and set SafeAreaEdges="SoftInput" or SafeAreaEdges="All" on that wrapper.
      • Do not set SoftInput directly on a ScrollView, because it does not work there.
    2. If this ContentView is hosted near the bottom of the screen, make sure its parent page or parent layout handles keyboard avoidance, not just the Entry itself.
      • A control-level margin such as OnPlatform margin will not solve keyboard overlap by itself.
    3. Check whether iOS keyboard auto-scrolling was disabled in app code.
      • If KeyboardAutoManagerScroll.Disconnect was called anywhere, the default iOS behavior is disabled.
      • Re-enable it with KeyboardAutoManagerScroll.Connect after the code path that disabled it.
    4. Use valid MAUI platform names in OnPlatform.
      • WinUI is the correct Windows platform value.
      • Windows is not the documented value.

    Example of a keyboard-aware wrapper:

    <ContentPage SafeAreaEdges="All">
        <Grid>
            <!-- existing content -->
        </Grid>
    </ContentPage>
    

    Or for a nested layout that should specifically avoid keyboard overlap:

    <Grid SafeAreaEdges="SoftInput">
        <!-- FlowFieldGroup / Entry content -->
    </Grid>
    

    If the page already uses a ScrollView, wrap that ScrollView in a Grid and apply SafeAreaEdges to the Grid, not the ScrollView.

    Also note that the documented Entry behavior on iOS is automatic keyboard avoidance, so if this still fails after moving the control into a keyboard-aware parent and ensuring KeyboardAutoManagerScroll was not disconnected, the issue is likely in the surrounding page layout rather than in the Entry XAML itself.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.