Xcode14(iOS16)中@FocusState无法通过Button聚焦TextField问题
解决Xcode 14 Beta 5中SwiftUI按钮无法将焦点设置到TextField的问题
你的代码逻辑本身是正确的,但在Xcode 14 Beta 5(版本14A5294e)这个测试版本中,直接在Button的action里设置@FocusState变量会存在视图更新时机冲突的问题,导致焦点无法正确触发。
可以通过将焦点设置操作放到主队列的异步任务中来规避这个Beta版本的bug,修改后的代码如下:
@FocusState private var isTexting: Bool @State private var text: String = "" var body: some View { VStack(spacing: 0) { TextField("00000000", text: $text) .focused($isTexting) Button { DispatchQueue.main.async { isTexting = true } } label: { Text("start texting") } } .frame(maxWidth: .infinity, maxHeight: .infinity) }
这个问题属于Xcode测试版本的已知兼容性问题,后续正式版本应该会修复。
内容的提问来源于stack exchange,提问作者moe
相关产品推荐
相关产品推荐

