Xamarin.Forms on iOS: 出现软键盘时缩小页面高度而不是向上移动

Xamarin.Forms on iOS: Shrink height of page instead of shifting it up when the softkeyboard appears

解决了软键盘与位于底部的输入字段重叠的问题。

XAML代码:

<ContentPage.Content>
    <AbsoluteLayout VerticalOptions="Fill">
        <ScrollView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,0.9">
            <Label Text="Heading" />
        </ScrollView>
        <Entry x:Name="SearchEntry" AbsoluteLayout.LayoutBounds=".5,1,1,.1" AbsoluteLayout.LayoutFlags="All" Placeholder="Suchen..." ReturnType="Done" />            
    </AbsoluteLayout>
</ContentPage.Content>

我安装了KeyboardOverlap!通过 nuget 插件。它将整个页面向上移动,直到条目再次可见。条目可见,但页面顶部不再可见,因为它向上移动了。

另一个经常提到的解决方案是将页面内容包装在 ScrollView 中。因为我确实需要一个 AbsoluteLayout 作为根内容,所以不幸的是这不是解决方案。

我正在寻找一种缩小页面高度的解决方案,而不是在软键盘出现时将其向上移动。

为什么我需要这个?该页面根据条目的输入动态填充搜索结果。如果只有很少的结果,则由于页面向上移动而看不到它们。用户可能认为没有任何搜索结果。在条目上方显示类似 'No search results.' 的文本将是一个简单的解决方案,但不是此处的选项。

在 iOS 项目中使用这个 CustomRenderer class 而不是 KeyboardOverlap 插件就成功了。

不要忘记在您需要功能的具体页面 classname(s) 中自定义第 14 行。否则会为您应用中的所有页面调用渲染器!

非常感谢Jack Hua - MSFT