SwiftUI TabView内NavigationLink跳转DetailView时TextField输入崩溃问题咨询
嵌套视图层级下TextField输入触发崩溃问题(iOS 14.4)
崩溃现象
当在嵌套于 List、Detail View 两层结构内的 TextField 中输入内容时,应用会直接崩溃,抛出错误 Thread 1: signal SIGABRT。
调试输出关键节选:
CoreSimulator --- Device: iPhone 8 (---) - Runtime: iOS 14.4 (----) - DeviceType: iPhone 8 AttributeGraph precondition failure: invalid size for indirect attribute: 73 vs 1.
最小可复现代码
struct RootView { var body: some View { TabView { ListView() .tag(0) } } } struct ListView { @State var isActive = false var body: some View { ScrollView { NavigationView { NavigationLink(destination: DetailView(), isActive: $isActive) } } } } struct DetailView { // 省略内部text状态定义 var body: some View { TextField("Keyboard appears and the app crashes.", text: $text) } }
核心诉求
- 寻找该崩溃的可落地规避方案
- 测试验证发现:如果移除外层
TabView,整套页面流程可以正常运行,但业务要求必须保留TabView能力,需要找到方案实现让Detail View跳出TabView的视图层级,在其外部完成渲染
已验证的有效解决路径
通过使用 UITabViewController 结合 UIViewControllerRepresentable 桥接替换原生SwiftUI TabView 的方式,该崩溃问题已被完全解决,结合测试结果推测,故障根源为SwiftUI原生 TabView 在iOS 14.4系统的特定层级组合下存在渲染逻辑缺陷。
内容的提问来源于stack exchange,提问作者nonamorando
相关产品推荐
相关产品推荐

