#swift #keyboard
#swift #клавиатура
Вопрос:
У меня есть два текстовых поля, одно для имени файла, а другое для выбора параметров из другого контроллера представления. Я использую второе текстовое поле в качестве выпадающего списка. Проблема в том, что когда я нажимаю на первое текстовое поле, а затем нажимаю на второе текстовое поле, клавиатура не скрывается.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == "fileUserCan" {
textField.endEditing(true)
guard let controller = UIStoryboard(name: "DownloadView", bundle: nil).instantiateViewController(withIdentifier: "DonwloadViewVC") as? ViewDownloadViewController else {return}
controller.modalPresentationStyle = .overFullScreen
controller.modalTransitionStyle = .crossDissolve
controller.callback = { check in
self.dismiss(animated: false, completion: nil)
if check == 1 {
textField.text = "download"
} else {
textField.text = "file"
}
}
textField.endEditing(true)
self.present(controller , animated: true)
}
}
Комментарии:
1. используйте textfield.resignFirstResponder()
2. не работает, работает, только если я нажимаю только на второе текстовое поле
3. у вас также есть это в сочетании с textFieldDidEndEditing?
4. можете ли вы, пожалуйста, указать с помощью кода
Ответ №1:
Вы можете указать тег для первого текстового поля.
Если вы сделали это, вы можете сделать что-то вроде этого:
func textFieldDidEndEditing(_ textField: UITextField) {
if textField.tag == 1 {
textfield.resignFirstResponder()
}
}
Комментарии:
1. нерабочая клавиатура все еще открыта, когда я перехожу из первого текстового поля
2. Попробуйте приведенный выше код со вторым текстовым полем. Я считаю, что первая клавиатура уже закрыта, но как только вы нажимаете на второе текстовое поле, напрямую вызывается новая клавиатура.