Отключить клавиатуру при нажатии на текстовое поле

#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
}