You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:02