【发布时间】:2021-09-03 22:03:15
【问题描述】:
每当文本字段失去焦点时,我想运行一些函数。 文本字段已经有 onEditingChange 和 onCommit 但我想在用户离开文本字段后运行验证功能。
与 onblur 为网络所做的相似,不会使屏幕上的任何其他视图混乱。
【问题讨论】:
-
onEditingChanged有什么问题?当用户离开文本字段时,我会给你false
每当文本字段失去焦点时,我想运行一些函数。 文本字段已经有 onEditingChange 和 onCommit 但我想在用户离开文本字段后运行验证功能。
与 onblur 为网络所做的相似,不会使屏幕上的任何其他视图混乱。
【问题讨论】:
onEditingChanged 有什么问题?当用户离开文本字段时,我会给你false
在 iOS 15 中,@FocusState 和 .focused 可以为您提供此功能。在 iOS 13 和 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)
})
}
}
【讨论】:
onEditingChanged 适用于 iOS 13 和 14