У меня есть текстовое поле, которое можно редактировать. Под этим текстовым полем у меня есть другое текстовое поле, по нажатию которого я перехожу на другой экран.
Когда я нажимаю на 1-е текстовое поле, появляется клавиатура. Но когда я нажимаю на второе текстовое поле, клавиатура все еще остается (возможно, потому, что это тоже текстовое поле). Но я хочу, чтобы клавиатура закрывалась в тот момент, когда я касаюсь второго текстового поля.
Я использую IQKeyboardManager
.
Вот что у меня есть..но не работает...
@IBAction func secondTextfield_Clicked(_ sender: Any) {
(sender as! UITextField).resignFirstResponder()
self.performSegue(withIdentifier: "mySegue", sender: nil)
}
Сначала вам нужно установить делегата во второе текстовое поле и реализовать метод делегата 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 для второго текстового поля клавиатура не будет открываться для второго текстового поля.
Прежде всего, почему вы используете текстовое поле для перехода на другую страницу? почему бы вам просто не использовать кнопку вместо этого Во-вторых, если вы хотите, вы можете сделать это:
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
}