#if IOS
using CoreGraphics;
using Foundation;
using Microsoft.Maui.Platform;
using UIKit;
#endif
namespace YourProject
{
#nullable disable
public class MainPage
{
public MainPage()
{
InitializeComponent();
#if IOS
Initialize();
#endif
}
#if IOS
double paddingBottom = 0;
bool showSoftKeyboard;
NSObject _keyboardShowObserver;
NSObject _keyboardHideObserver;
~MainPage()
{
UnregisterForKeyboardNotifications();
}
void Initialize()
{
this.Padding = new(Padding.Left, Padding.Top, Padding.Right, paddingBottom);
RegisterForKeyboardNotifications();
}
void OnKeyboardShow(object sender, UIKeyboardEventArgs args)
{
if (showSoftKeyboard)
{
return;
}
showSoftKeyboard = true;
NSValue result = (NSValue)args.Notification.UserInfo.ObjectForKey(new NSString(UIKeyboard.FrameEndUserInfoKey));
CGSize keyboardSize = result.RectangleFValue.Size;
paddingBottom = this.Padding.Bottom;
this.Padding = new Thickness(Padding.Left, Padding.Top, Padding.Right, keyboardSize.Height);
}
void OnKeyboardHide(object sender, UIKeyboardEventArgs args)
{
if (!showSoftKeyboard)
{
return;
}
showSoftKeyboard = false;
this.Padding = new Thickness(Padding.Left, Padding.Top, Padding.Right, paddingBottom);
}
void RegisterForKeyboardNotifications()
{
_keyboardShowObserver ??= UIKeyboard.Notifications.ObserveWillShow(OnKeyboardShow);
_keyboardHideObserver ??= UIKeyboard.Notifications.ObserveWillHide(OnKeyboardHide);
}
void UnregisterForKeyboardNotifications()
{
if (_keyboardShowObserver is not null)
{
_keyboardShowObserver.Dispose();
_keyboardShowObserver = null;
}
if (_keyboardHideObserver is not null)
{
_keyboardHideObserver.Dispose();
_keyboardHideObserver = null;
}
}
#endif
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~