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 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
}
});
}
}
}
我的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 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
}
});
}
}
}