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

iOS15设备上SwiftUI TextField软键盘返回键触发异常跳转问题

问题根因

这是iOS15版本SwiftUI的已知系统bug,由系统对导航栏布局、TextField键盘返回事件的处理逻辑变更导致:

  • 日志中Unbalanced calls to begin/end appearance transitions提示说明点击软键盘返回键时,系统误触发了导航栈的pop返回操作,才会跳转到其他视图
  • 附带的布局约束报错是iOS15导航栏内部的系统级问题,和开发者的自定义布局代码无关,iOS15.1及以上系统版本已经修复了该警告
可行解决方案

方案1:手动拦截返回键事件,主动收起键盘

给你的TextField添加onSubmit修饰符,监听到返回键点击时主动收起键盘,拦截系统默认事件冒泡:

TextField("Search product", text: $searchableText)
   .font(.system(size: 16))
   .padding([.top, .bottom])
   .keyboardType(.default)
   // 新增以下代码
   .onSubmit {
       UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
   }

方案2:临时禁用当前页的交互式返回手势

如果方案1不生效,可以在当前页面出现时禁用导航栈的侧滑返回手势,页面销毁时再恢复,避免误触发pop操作:

// 页面的onAppear和onDisappear修饰符
.onAppear {
    UINavigationController.appearance().interactivePopGestureRecognizer?.isEnabled = false
}
.onDisappear {
    UINavigationController.appearance().interactivePopGestureRecognizer?.isEnabled = true
}

如果你的项目使用了自定义导航控制器,直接修改对应实例的手势属性即可。

额外说明

如果仅需要解决约束警告,不需要做额外修改,升级系统到iOS15.1及以上版本警告会自动消失,不会影响App的提审和正常功能使用。

内容的提问来源于stack exchange,提问作者Mahmudur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:27:02