MAUI iOS中Entry失焦时隐藏键盘的代码问题排查
问题排查与修复方案
iOS端代码问题分析
你当前的iOS代码存在两个关键问题:
EditingDidEnd事件是编辑结束后的回调,此时键盘通常已自动收起,这里调用ResignFirstResponder属于冗余操作,且没覆盖Entry失焦触发键盘收起的核心场景。- 未监听TextField的焦点变化事件,导致Entry失焦时无法主动触发键盘收起逻辑。
修复后的iOS代码
替换原iOS段代码为以下内容:
#if IOS // 处理键盘"完成"按钮收起键盘 handler.PlatformView.ShouldReturn = (textField) => { textField.ResignFirstResponder(); return true; }; // 监听焦点变化,失焦时主动收起键盘 handler.PlatformView.DidChangeSelection += (sender, e) => { var textField = sender as UIKit.UITextField; if (textField != null && !textField.IsFirstResponder) { textField.ResignFirstResponder(); } }; #endif
额外优化(可选)
如果需要处理点击页面其他区域导致Entry失焦的场景,可以在MAUI页面中添加全局点击手势,统一收起键盘:
// 在页面构造或初始化方法中添加 var tapGesture = new TapGestureRecognizer(); tapGesture.Tapped += (s, e) => { // 替换为你的Entry实例,或者遍历页面中的Entry调用Unfocus() yourComponentEntry.Unfocus(); }; Content.GestureRecognizers.Add(tapGesture);
Android端代码确认
Android端的逻辑是正确的:在FocusChange事件中判断失去焦点后,调用HideSoftInputFromWindow隐藏键盘,无需修改。
内容的提问来源于stack exchange,提问作者c3yo
相关产品推荐
相关产品推荐

