我有一个表单上的文本框,用户可以在其中输入值,但我还想通过按钮更新文本框的内容。
以下是我的代码:
struct test: View {
@State private var amount: Double = 0.0
var body: some View {
Form {
VStack {
HStack {
Text("Amount EUR")
Spacer()
TextField("Type amount", value: $amount, format: .number)
.keyboardType(.numberPad)
.multilineTextAlignment(.trailing)
}
Text("Set MAX (999)")
.frame(maxWidth: .infinity, alignment: .leading)
.onTapGesture {
print("before tap \(amount )")
amount = 999
print("after tap \(amount)")
}
}
}
}
当我刚启动应用程序时,第一次点击文本会将文本字段更新为999,但之后就不再起作用了。
amount
的值已正确更新,但文本字段没有反映出变化。你能解释一下吗?
asyncAfter
开始,我能够将其简化为在简单的DispatchQueue.main.async
中更新绑定值。不需要使用@FocusState
,只需DispatchQueue.main.async { amount = newValue }
。 - bauerMusic