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)
        })
            
    }
}