You need to enable JavaScript to run this app. SwiftUI中页面dismiss时键盘无法正常收起残留高度问题
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中页面dismiss时键盘无法正常收起残留高度问题

问题原因

这个键盘背景残留是iOS页面过渡动画和键盘收起动画冲突导致的,你在页面onDisappear阶段才触发键盘收起,此时页面已经开始退出视图层级,全局endEditing调用没有正确触发系统的键盘容器回收逻辑,仅隐藏了按键区域,没有释放键盘占据的高度空间。

修复步骤
  • 第一步:修改CustomTxtfldForFollowerScrn中updateUIView的放弃第一响应逻辑,优先让当前输入框自身释放第一响应者,同时重置状态避免下次进入页面无法正常弹出键盘:
else if !isFirstResponder {
    DispatchQueue.main.async {
        uiView.resignFirstResponder()
        context.coordinator.didBecomeFirstResponder = false
    }
}
  • 第二步:在页面onDisappear中直接触发全局结束编辑,不要依赖绑定值更新触发的回调,避免视图层级变化后回调不执行:
.onDisappear{
    updateKeyboard = false
    UIApplication.shared.endEditing()
}
  • 可选优化:如果还有偶现残留,可以给NavigationView添加.ignoresSafeArea(.keyboard, edges: .bottom)修饰符,让页面不监听键盘高度变化,避免过渡阶段高度计算异常。

内容的提问来源于stack exchange,提问作者Sham Dhiman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 07:12:04