我正在使用Swift-UI创建我的应用程序。
AccountView
列出了用户的属性,您可以对其进行更新。
单击列表的用户变量行上的Update
按钮后,导航至EditVariableView
,您可以在其中使用Text Field
更改变量。
当然,该文本字段具有对输入文本的验证,您可以通过Submit
右上角的EditVariableView
按钮来提交更改。
为了验证输入,我使用onCommit
来检测输入的更改,但这是一个问题。
当您触摸文本字段时,键盘会弹出,您也可以输入文本。但是onCommit
仅在您关闭键盘时才会发出事件。
如果您输入文本并在不关闭键盘的情况下单击Submit
按钮,则肯定onCommit
不会发出验证事件。因此,当然不会进行验证。
我想让你告诉我,如何在每次文本更改时检测输入更改。
答案 0 :(得分:2)
如果TextField处于编辑状态,则可以禁用“提交”按钮
aws apigateway update-usage-plan --usage-plan-id abc123 --patch-operations op="add",path="/productCode",value="s5a8d5kqgg8ymke2yjxx"
答案 1 :(得分:0)
在Xcode 12和iOS 14,macOS 11或任何其他包含SwiftUI 2.0的操作系统中,有一个名为'onChange'的新修饰符可以检测给定state
的任何更改,并且可以在任何视图。因此,进行一些小的重构:
struct ContentView: View {
@State var txt: String = ""
@State var editingFlag = false
var body: some View {
VStack {
TextField("text", text: $txt)
.onChange(of: txt) {
print("Changed to :\($0)")
}
}
.padding()
.border(Color.red)
Button("SUBMIT") {
print("submit")
}
.disabled(editingFlag)
}
}
答案 2 :(得分:0)
来自:用Swift进行黑客攻击。保罗·哈德森
struct ContentView : View {
@State private var name = ""
var body: some View {
TextField("Enter your name:", text: $name)
.textFieldStyle(RoundedBorderTextFieldStyle())
.onChange(of: name) { newValue in
print("Name changed to \(name)!")
}
}
}