可以使用 .resignFirstResponder() 来关闭 TextField 的键盘,例如:
struct ContentView: View {
@State private var text: String = ""
@State private var isEditing: Bool = false
var body: some View {
VStack {
TextField("Enter text", text: $text, onEditingChanged: { (editing) in
self.isEditing = editing
})
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Done") {
self.isEditing = false
UIApplication.shared.endEditing()
}
.padding()
}
}
}
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
其中,按钮的点击事件调用了自定义的 endEditing 函数来关闭键盘。注意要在 App 扩展中将该函数声明为可访问的。