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

Posted

技术标签:

【中文标题】SwiftUI 在失去焦点时运行函数 TextField【英文标题】:SwiftUI run function on losing focus TextField 【发布时间】:2021-09-03 22:03:15 【问题描述】:

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

onblur 为网络所做的相似,不会使屏幕上的任何其他视图混乱。

【问题讨论】:

onEditingChanged 有什么问题?当用户离开文本字段时,我会给你false 【参考方案1】:

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

【讨论】:

对于 13 或以下的 IO 是否有类似的东西? 更新了我的答案——onEditingChanged 适用于 iOS 13 和 14

以上是关于SwiftUI 在失去焦点时运行函数 TextField的主要内容,如果未能解决你的问题,请参考以下文章

当 TextEditor 失去焦点时如何得到通知?

使用蓝牙键盘时,离子输入失去焦点

SwiftUI - 如何修改数组中的文本字段

以编程方式显示/隐藏虚拟键盘

[转]jQuery.validate插件在失去焦点时执行验证代码

窗口/舞台失去焦点时的事件