使用SwiftUI时如何隐藏键盘?

对于以下情况,如何使用keyboard隐藏SwiftUI
案例1
我有TextField并且我需要在用户单击keyboard按钮时隐藏return
案例2
我有TextField并且我需要在用户点击外部时隐藏keyboard
如何使用SwiftUI进行此操作?
注:
我没有问任何关于UITextField的问题。我想通过使用SwifUITextField)。


最佳答案:

到目前为止,我唯一找到的关闭键盘的方法是调用

struct ContentView : View {
    @State private var name: String = ""

    var body: some View {
        VStack {
            Text("Hello \(name)")
            TextField($name, placeholder: Text("Name...")) {
                // Called when the user tap the return button
                // see `onCommit` on TextField initializer.
                UIApplication.shared.keyWindow?.endEditing(true)
            }
        }
    }
}

如果您想通过点击关闭键盘,您可以通过点击操作创建全屏白色视图,这将触发endEditing(_:)
struct Background<Content: View>: View {
    private var content: Content

    init(@ViewBuilder content: @escaping () -> Content) {
        self.content = content()
    }

    var body: some View {
        Color.white
        .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
        .overlay(content)
    }
}

struct ContentView : View {
    @State private var name: String = ""

    var body: some View {
        Background {
            VStack {
                Text("Hello \(self.name)")
                TextField(self.$name, placeholder: Text("Name...")) {
                    self.endEditing(true)
                }
            }
        }.tapAction {
            self.endEditing(true)
        }
    }

    private func endEditing(_ force: Bool) {
        UIApplication.shared.keyWindow?.endEditing(force)
    }
}