SwiftUI 运行 失去焦点 TextField 的功能
SwiftUI run function on losing focus TextField
我想 运行 在文本字段失去焦点时执行某些功能。
Textfield 已经有 onEditingChange 和 onCommit 但我想 运行 一旦用户离开 textfield 的验证函数。
与 onblur 为 Web 所做的相似,而不会使屏幕上的任何其他视图混乱。
在iOS 15 中,@FocusState
和.focused
可以为您提供此功能。在iOS13和14上,可以使用onEditingChanged
(显示在第二个TextField
)
struct ContentView: View {
@State private var text = ""
@State private var text2 = ""
@FocusState private var isFocused: Bool
var body: some View {
TextField("Text goes here", text: $text)
.focused($isFocused)
.onChange(of: isFocused) { newValue in
if !newValue {
print("Lost focus")
}
}
TextField("Other text", text: $text2, onEditingChanged: { newValue in
print("Other text:",newValue)
})
}
}
我想 运行 在文本字段失去焦点时执行某些功能。 Textfield 已经有 onEditingChange 和 onCommit 但我想 运行 一旦用户离开 textfield 的验证函数。
与 onblur 为 Web 所做的相似,而不会使屏幕上的任何其他视图混乱。
在iOS 15 中,@FocusState
和.focused
可以为您提供此功能。在iOS13和14上,可以使用onEditingChanged
(显示在第二个TextField
)
struct ContentView: View {
@State private var text = ""
@State private var text2 = ""
@FocusState private var isFocused: Bool
var body: some View {
TextField("Text goes here", text: $text)
.focused($isFocused)
.onChange(of: isFocused) { newValue in
if !newValue {
print("Lost focus")
}
}
TextField("Other text", text: $text2, onEditingChanged: { newValue in
print("Other text:",newValue)
})
}
}