我正在使用SecureField
构建登录页面,但我注意到它没有onEditingChanged
事件,因此我们无法知道它是否已经成为了第一响应者。有没有解决这个问题的方法?
class SecureFieldModel: ObservableObject {
@Published var secureText = "" {
didSet {
print(secureText)
}
}
}
视图:
@ObservedObject var model = SecureFieldModel()
struct LoginView: View {
var body: some View {
SecureField("Type your text here", text: $model.secureText)
}
}
struct ContentView: View {
@ObservedObject var model = SecureFieldModel()
var body: some View {
// No info when focus removed
SecureField("Type your text here", text: $model.secureText)
.onTapGesture { // when active
self.model.textFieldActivated()
}
// Do something when focus removed
SecureField("Type your text here", text: $model.secureText, onCommit: {print("Commited and focus removed")})
.onTapGesture { // when active
self.model.textFieldActivated()
}
}
}
class SecureFieldModel: ObservableObject {
@Published var secureText = "" {
didSet {
// if text
if secureText.count >= 1 {
print(secureText)
}
}
}
func textFieldActivated() {
if secureText.count >= 1 {
print(secureText)
} else {
print("is active")
}
}
}
onCommit
添加到文本字段即可。我已相应修改了代码。 - SimononCommit
仅在用户按下回车键时使用。这意味着当点击另一个文本字段或以其他方式关闭键盘时,它不会激活该闭包。 - Björn Ro
SecureField
何时被聚焦。 - Shailesh