如何检测TextField在iOS的SwiftUI中何时失去焦点?

时间:2019-10-16 05:20:58

标签: ios swift swiftui

TextField("Name", text: $name)

我找到了这种方法

func focusable(_ isFocusable: Bool = true, onFocusChange: @escaping (Bool) -> Void = { _ in }) -> some View

但是它仅适用于MacOS,如何为iOS做类似的事情?

2 个答案:

答案 0 :(得分:2)

您可以使用文本字段中存在的初始化程序init(_:text:onEditingChanged:onCommit:)。当您开始编辑和结束编辑时,将触发一个动作。您可以在下面找到最小的示例。

import SwiftUI

struct ContentView: View {
    @State private var greeting: String = "Hello world!"
    var body: some View {
        TextField("Welcome", text: $greeting, onEditingChanged: { (editingChanged) in
            if editingChanged {
                print("TextField focused")
            } else {
                print("TextField focus removed")
            }
        })
    }
}

希望这会有所帮助。

答案 1 :(得分:0)

iOS 15

在 iOS 15 中,我们可以使用 onFocus:

TextField("Name", text: $name)
    .onFocus { isFocused in
        // ...
    }