Xamarin Forms - 键盘在iOS上遮挡了输入框(文本字段)

8

当用户在 Xamarin Forms 页面上点击输入框(文本框)时,屏幕会向上移动并出现键盘,这很好。然而,在 iOS 上,键盘会遮挡输入框。在原生开发中,需要在代码中处理,但在 Xamarin Forms 中如何解决这个问题呢?我认为唯一的解决方案是尝试使用普通的 Xamarin 并在那里开发单独的平台代码。

4个回答

4
将您的Entry元素包装在ScrollView中。

这个没有做任何事情,只是让我的输入表单变得非常非常小。一些解释会很有帮助。 - noone392
这个没有做任何事情,只是让我的输入表单变得非常非常小。一些解释会很有帮助。 - undefined

4
您可以在构造函数中使用以下代码:
    public YourPage()
    {
        InitializeComponent();
        this.yourEntry.Focused += (s, e) => { SetLayoutPosition(onFocus: true); };
        this.yourEntry.Unfocused += (s, e) => { SetLayoutPosition(onFocus: false); };            
    }

实现以下方法:

void SetLayoutPosition(bool onFocus)
    {
        if (onFocus)
        {
            if (Device.RuntimePlatform == Device.iOS)
            {
                this.CenterStackLayout.TranslateTo(0, -100, 50);
            }
        }
        else
        {
            if (Device.RuntimePlatform == Device.iOS)
            {
                this.CenterStackLayout.TranslateTo(0, 0, 50);
            }
        }
    }

不要忘记将你的根布局添加到ScrollView中,就像@Jason提到的那样。

你怎么知道正确的数字是多少?在我的设备上,它似乎在大约260的位置上。 - noone392
你怎么知道正确的数字是多少?在我的设备上,看起来大约在260这个位置。 - undefined
你需要稍微滚动一下,不要滚动这么多。所以请使用最小的数值。而且这些都因设备尺寸的不同而异。 - Srusti Thakkar
您需要滚动一点,不要滚动这么多。所以要使用最小数量。而且这些都因设备尺寸不同而异。 - undefined

3

在我的情况下,我使用了网格和堆栈,将我的根布局包装在ScrollView中,并将方向设置为不确定。这样做可以不需要任何Nuget或代码后台就能实现效果。 实际上,我尝试过 IQKeyboardManager,但由于依赖问题已经废弃无法使用。 感谢 @Jason 提供的思路。


2
请阅读[答案]并[编辑]您的答案。目前,它并不是非常清楚它是对问题的回答。 - David Buck
2
设置 Orientation="Neither" 对我很有帮助。如果没有这个设置,ScrollView的内容大小会出现问题。 - BlueRaja - Danny Pflughoeft

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接