gpt4 book ai didi

ios - iOS 上的 Xamarin.Forms 中的键盘与编辑器重叠

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:20:43 28 4
gpt4 key购买 nike

当我聚焦于 Editor 时,键盘会覆盖 EditorButton。我知道,有一个解决方案:将元素放在 ScrollView 中,但是这个解决方案在 ScrollView 中滚动 ListView 时会产生很大的问题。我应该怎么做才能使其正常工作?

布局:红色 - ScrollView,绿色 - ListView,蓝色 - StackLayout 带有 EditorButton

enter image description here

这是工作原理的视频: https://streamable.com/wvd3h

解决方案 #2 是使用 Xamarin.Forms.Plugins - KeyboardOverlap,但是这个插件在 TabbedPage 上的标签栏有问题

最佳答案

您可以创建一个自定义 iOS 渲染器,而不是使用 ScrollView ,它会在键盘处于事件状态时向上移动您的 View (使用边距)。

可以在这里看到一个例子: 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"

关于ios - iOS 上的 Xamarin.Forms 中的键盘与编辑器重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53078705/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com