iOS 17中SwiftUI .searchable引发无效数值等错误,求解决方案
iOS 17模拟器SwiftUI Searchable组件报错修复方案
问题环境
- 模拟器:iPhone 15(iOS 17)
- Xcode:Version 15.0 (15A240d)
复现代码
import SwiftUI struct ContentView: View { @State private var searchText = "" var body: some View { NavigationStack { Text("Searching for \(searchText)") .navigationTitle("Searchable Example") } .searchable(text: $searchText) } } #Preview { ContentView() }
触发的错误
- 输入搜索文本时出现:
Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
- 取消搜索后再次点击搜索框时出现:
-[RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID
可行修复方案
1. 升级Xcode版本
Xcode 15.0初始版本存在大量模拟器相关bug,升级到15.0.1及以上稳定版本(如15.1、15.2)后,该问题通常会被官方修复。
2. 重置模拟器
打开模拟器,依次点击顶部菜单 Simulator > Reset Content and Settings...,确认重置后重新运行项目,多数情况下能解决这类模拟器交互类bug。
3. 临时替换NavigationStack为NavigationView
如果暂时无法升级Xcode,可以尝试将NavigationStack替换为NavigationView,部分用户反馈此方法能临时绕过报错:
import SwiftUI struct ContentView: View { @State private var searchText = "" var body: some View { NavigationView { Text("Searching for \(searchText)") .navigationTitle("Searchable Example") } .searchable(text: $searchText) .navigationViewStyle(.stack) } } #Preview { ContentView() }
4. 清理项目缓存
- 使用快捷键
Command + Shift + K清理项目构建缓存 - 使用快捷键
Command + Option + Shift + K清理Derived Data - 重启Xcode后重新构建运行项目
内容的提问来源于stack exchange,提问作者Sever
相关产品推荐
相关产品推荐

