Xamarin Forms - iOS 上的键盘覆盖条目(文本字段)

Posted

技术标签:

【中文标题】Xamarin Forms - iOS 上的键盘覆盖条目(文本字段)【英文标题】:Xamarin Forms - Keyboard covers Entry (text field) on iOS 【发布时间】:2018-12-22 23:28:01 【问题描述】:

在 Xamarin 表单页面(下面的代码)上,当用户在 android 上点击条目(文本字段)时,屏幕向上移动并出现键盘,这很好。但是,在 ios 键盘上覆盖了条目。在本机开发中,它需要在代码中处理,但是如何在 Xamarin Forms 中解决这个问题?我认为唯一的解决方案是尝试常规 Xamarin 并在那里开发单独的平台代码。

【问题讨论】:

【参考方案1】:

Entry 元素包装在ScrollView

【讨论】:

【参考方案2】:

为此,您可以在构造函数中使用以下代码:

    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 所提到的。

【讨论】:

【参考方案3】:

参考https://forums.xamarin.com/discussion/151812/ios-keyboard-overlapping-entry

下面的库解决了我的问题。 https://github.com/TheEightBot/Xamarin.IQKeyboardManager

public override bool FinishedLaunching(UIApplication app, NSDictionary options)

    global::Xamarin.Forms.Forms.Init();

    IQKeyboardManager.SharedManager.Enable = true;

    LoadApplication(new App());

    return base.FinishedLaunching(app, options);

【讨论】:

【参考方案4】:

在我的例子中,我使用网格和堆栈,将我的根布局包装在 ScrollView 中,并将方向设置为两者都没有。它可以在没有任何 Nuget 和代码隐藏的情况下工作。 实际上,我尝试了 IQKeyboardManager,但它都不起作用,依赖弃用。 感谢@Jason 的想法。

【讨论】:

请阅读How to Answer和edit你的答案。目前,这是否是问题的答案还不是很清楚。

以上是关于Xamarin Forms - iOS 上的键盘覆盖条目(文本字段)的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示

Xamarin Forms Picker - iOS 上的“完成”文本

在 iOS 上的 Xamarin.Forms.Maps 中使用 Xamarin.Essentials Geolocation 获取设备位置的奇怪问题

如何使用 Xamarin Forms 更改键盘的习惯用法

有没有办法在 iOS 项目上禁用 xamarin.forms.maps 上的信息窗口?

iOS 上的 Xamarin.Forms Master/Detail 边缘滑动