簡體   English   中英

iOS 上 Xamarin.Forms 中的鍵盤重疊編輯器

[英]Keyboard overlaps Editor in Xamarin.Forms on iOS

當我聚焦那個Editor ,一個鍵盤與EditorButton重疊。 我知道,有一個解決方案:將元素放在ScrollView ,但是這個解決方案在ScrollView滾動ListView會產生很大的問題。 我該怎么做才能使其正常工作?

布局:紅色 - ScrollView ,綠色 - ListView ,藍色 - StackLayout with EditorButton

在此處輸入圖片說明

這是其工作原理的視頻: https : //streamable.com/wvd3h

解決方案#2 是使用 Xamarin.Forms.Plugins - KeyboardOverlap,但是這個插件在 TabbedPage 上的標簽欄有問題

您可以創建一個自定義的 iOS 渲染器,而不是使用滾動視圖,在鍵盤處於活動狀態時向上移動您的視圖(使用邊距)。

一個例子可以在這里看到: https : //github.com/rdelrosario/ChatUIXForms/blob/master/ChatUIXForms.iOS/Renderers/ChatEntryRenderer.cs

相關代碼:

void RegisterForKeyboardNotifications()
    {
        if (_keyboardShowObserver == null)
            _keyboardShowObserver = UIKeyboard.Notifications.ObserveWillShow(OnKeyboardShow);
        if (_keyboardHideObserver == null)
            _keyboardHideObserver = UIKeyboard.Notifications.ObserveWillHide(OnKeyboardHide);
    }

    void OnKeyboardShow(object sender, UIKeyboardEventArgs args)
    {

        NSValue result = (NSValue)args.Notification.UserInfo.ObjectForKey(new NSString(UIKeyboard.FrameEndUserInfoKey));
        CGSize keyboardSize = result.RectangleFValue.Size;
        if (Element != null)
        {
            Element.Margin = new Thickness(0, 0, 0, keyboardSize.Height); //push the entry up to keyboard height when keyboard is activated

        }
    }

    void OnKeyboardHide(object sender, UIKeyboardEventArgs args)
    {
        if (Element != null)
        {
            Element.Margin = new Thickness(0); //set the margins to zero when keyboard is dismissed
        }

    }


    void UnregisterForKeyboardNotifications()
    {
        if (_keyboardShowObserver != null)
        {
            _keyboardShowObserver.Dispose();
            _keyboardShowObserver = null;
        }

        if (_keyboardHideObserver != null)
        {
            _keyboardHideObserver.Dispose();
            _keyboardHideObserver = null;
        }
    }

在 Android 上,這可能不是問題,但如果是,您可以嘗試

android:Application.WindowSoftInputModeAdjust="Resize"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM