SwiftUI 在失去焦点 TextField 时运行函数

Sal*_*aJJ 3 events textfield swiftui

每当文本字段失去焦点时我想运行一些函数。文本字段已经有 onEditingChange 和 onCommit,但我想在用户离开文本字段后运行验证函数。

类似于onblur在网络上所做的事情不会扰乱屏幕上的任何其他视图。

jn_*_*pdx 7

在 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)
        })
            
    }
}
Run Code Online (Sandbox Code Playgroud)