在文本字段“添加任天堂开关”中输入以下内容。 “nintendo”应自动更正为“Nintendo”,然后按“发送”按钮。
通过按钮操作关闭完成此操作时,文本字段绑定状态变量将清除,但不会在 UI 中呈现为清除状态
但是,如果通过 onSubmit 视图修饰符闭包完成此操作,文本字段将被清除
我是否缺少某些东西才能使其正常工作?
import SwiftUI
struct ContentView: View {
@State var text: String = ""
private func clearText() {
print("YAHOOOO 2clear \(self.text)")
self.text = ""
print("YAHOOOO 2\(self.text)")
}
var body: some View {
VStack {
TextField("Message", text: $text, axis: .vertical)
.autocorrectionDisabled(false)
.onSubmit {
clearText()
}
Button(action: {
DispatchQueue.main.async {
clearText()
}
}, label: {
Text("Send")
})
}
.padding()
}
}
包装在dispatchQueue.main.async调用中 使用 onSubmit 视图修改器
UI 应更新并将文本字段呈现为空
我找到的解决方案是强制更新
TextField
。而且您不需要 DispatchQueue.main.async
或 onSubmit
。
import SwiftUI
struct ContentView: View {
@State var updater = false
@State var text: String = ""
private func clearText() {
self.text = ""
updater.toggle()
}
var body: some View {
VStack {
TextField("Message", text: $text, axis: .vertical)
.autocorrectionDisabled(false)
.id(updater)
Button {
clearText()
} label: {
Text("Send")
}
}
.padding()
}
}