#ios #swift #iqkeyboardmanager
#iOS #swift #iqkeyboardmanager
Вопрос:
У меня есть текстовое поле, которое можно редактировать. Под этим текстовым полем у меня есть другое текстовое поле, при нажатии на которое я перехожу на другой экран.
Когда я нажимаю на 1-е текстовое поле, появляется клавиатура. Но когда я нажимаю на 2-е текстовое поле, клавиатура по-прежнему остается (возможно, потому, что это тоже текстовое поле). Но я хочу, чтобы клавиатура отключалась в тот момент, когда я нажимаю на второе текстовое поле.
Я использую IQKeyboardManager
.
Это то, что у меня есть..Но это не работает…
@IBAction func secondTextfield_Clicked(_ sender: Any) {
(sender as! UITextField).resignFirstResponder()
self.performSegue(withIdentifier: "mySegue", sender: nil)
}
Ответ №1:
Сначала вам нужно установить делегат для второго текстового поля и реализовать метод textFieldShouldBeginEditing
делегирования.
secondTextField.delegate = self
В следующем методе делегирования вы можете проверить текстовое поле и вернуть true / false на основе вашего текстового поля.
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
view.endEditing(true) //with will end editing for the view
if textField == secondTextField {
self.performSegue(withIdentifier: "mySegue", sender: nil)
return false
}
return true
}
При возврате false для secondTextField клавиатура не будет открыта для второго текстового поля.
Ответ №2:
Прежде всего, почему вы используете текстовое поле для перехода на другую страницу? почему бы вам просто не использовать button вместо второй вещи, если вы хотите, вы можете это сделать:
override func viewDidLoad() {
super.viewDidLoad()
...
secondTF.delegate = self
...
}
И вызовите эту функцию в любом месте вашего кода:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
view.endEditing(true)
if textField == secondTF {
// Navigate to the second VC with using storyBoard or navigationController
return false
}
return true
}