У меня есть TextField в SwiftUI, который должен использовать другую клавиатуру в зависимости от значения переменной @State, определенной с помощью средства выбора SegementedControl ().
Как я могу отклонить клавиатуру (например, отправить endEditingсобытие) когда пользователь касается другого сегмента? Мне нужно сделать это, потому что я хочу изменить тип клавиатуры, и если textField является респондентом, клавиатура не изменится.
У меня есть это расширение:
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
И яможет сделать что-то вроде
UIApplication.shared.endEditing()
Но я не знаю, где и как это вызвать, когда пользователь нажимает на другой сегмент.
Я попытался поместить tapGesture на Picker иклавиатура не отключается, но касание не проходит к средству выбора, поэтому оно не изменяется.
Фрагмент кода здесь:
@State private var type:String = "name"
. ,.
Form {
Section(header: Text("Search Type")) {
Picker("", selection: $type) {
Text("By Name").tag("name")
Text("By AppId").tag("id")
}.pickerStyle(SegmentedPickerStyle())
}
Section(header: Text("Enter search value")) {
TextField(self.searchPlaceHolder, text: $searchValue)
.keyboardType(self.type == "name" ? UIKeyboardType.alphabet : UIKeyboardType.numberPad)
}
}