SwiftUI:如何在使用 DatePicker 后隐藏键盘
SwiftUI: How to hide keyboard after using DatePicker
用户在 DatePicker 中选择某个日期后如何隐藏键盘?
目前,当我点击名称 TextField,然后 - 显示键盘 - 我点击 DatePicker,当 DatePicker 的用于选择日期的弹出 window 出现时,键盘隐藏,但在我选择一些日期之后DatePicker 的弹出 window,键盘再次出现。
如何才能使在 DatePicker 的弹出窗口中提交值后键盘不再出现 window?
import SwiftUI
struct EditView: View {
@Binding var name: String
@State private var birthday: Date = Date()
@FocusState private var isTextFieldFocused
var body: some View {
Form {
TextField("Name", text: $name)
.focused($isTextFieldFocused)
DatePicker("Birthday", selection: $birthday)
}
}
}
struct EditView_Previews: PreviewProvider {
static var previews: some View {
EditView(name: .constant(String("Joe")))
}
}
FocusState 不是必需的,添加视图扩展以隐藏键盘
struct EditView: View {
@Binding var name: String = ""
@State private var birthday: Date = Date()
//@FocusState private var isTextFieldFocused
var body: some View {
Form {
TextField("Name", text: $name)
DatePicker("Birthday", selection: $birthday)
}
.onTapGesture {
hideKeyboard()
}
}
}
extension View {
func hideKeyboard() {
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
用户在 DatePicker 中选择某个日期后如何隐藏键盘?
目前,当我点击名称 TextField,然后 - 显示键盘 - 我点击 DatePicker,当 DatePicker 的用于选择日期的弹出 window 出现时,键盘隐藏,但在我选择一些日期之后DatePicker 的弹出 window,键盘再次出现。
如何才能使在 DatePicker 的弹出窗口中提交值后键盘不再出现 window?
import SwiftUI
struct EditView: View {
@Binding var name: String
@State private var birthday: Date = Date()
@FocusState private var isTextFieldFocused
var body: some View {
Form {
TextField("Name", text: $name)
.focused($isTextFieldFocused)
DatePicker("Birthday", selection: $birthday)
}
}
}
struct EditView_Previews: PreviewProvider {
static var previews: some View {
EditView(name: .constant(String("Joe")))
}
}
FocusState 不是必需的,添加视图扩展以隐藏键盘
struct EditView: View {
@Binding var name: String = ""
@State private var birthday: Date = Date()
//@FocusState private var isTextFieldFocused
var body: some View {
Form {
TextField("Name", text: $name)
DatePicker("Birthday", selection: $birthday)
}
.onTapGesture {
hideKeyboard()
}
}
}
extension View {
func hideKeyboard() {
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}