Xamarin 表单:当键盘打开时,顶部堆栈布局在 UI 中不可见

Xamarin forms: Top stacklayout is not visible in UI when keyboard is on

我的Xaml:

<StackLayout
   Orientation="Vertical">

   <StackLayout
      Orientation="Horizontal"> 
      //Group labels and back arrow
   </StackLayout>

   <ListView>
      //Message list
   </ListView>

   <Grid>
   //Plus symbol,Editor and send icon
   </Grid>

</StackLayout>

截图:

问题:

在正常屏幕中,顶部有一个栏(红色圆圈)。单击底部顶部栏上的编辑器时隐藏。我需要顶部栏始终位于顶部。 此问题仅出现在 IOS 部分,在 android 中此功能运行良好。我该如何解决这个问题?

UI向上调整是iOS的一个特点。您可以通过自定义渲染器缩小(或保留)视图。

检查this great explanation

还有 this peace of code 用于 iOS 上的键盘自定义渲染器。

就像问题中的图片,我的软键盘总是碰到编辑器。所以我为我的编辑器添加了一个自定义渲染器来解决这个问题。 添加自定义呈现器后,顶部栏始终停留在页面顶部。

我使用了以下自定义渲染器来解决键盘重叠问题:

using System;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using HBIClientFacingApp;
using HBIClientFacingApp.iOS;

[assembly:ExportRenderer( typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace YourNameSpace.iOS
{
    public class CustomEditorRenderer: EditorRenderer
    {
        public ChatEntryRenderer()
        {   
            UIKeyboard.Notifications.ObserveWillShow ((sender, args) => {

            if (Element != null)
            {
                Element.Margin = new Thickness(0,0,0, args.FrameEnd.Height); //push the entry up to keyboard height when keyboard is activated
            }
        });

        UIKeyboard.Notifications.ObserveWillHide ((sender, args) => {

            if (Element != null)
            {
                   Element.Margin = new Thickness(0); //set the margins to zero when keyboard is dismissed
            }

        }); 
    }
  }
}