Как скрыть клавиатуру при представлении другого viewcontroller в делегате textFieldDidBeginEditing в swift?

#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. Попробуйте приведенный выше код со вторым текстовым полем. Я считаю, что первая клавиатура уже закрыта, но как только вы нажимаете на второе текстовое поле, напрямую вызывается новая клавиатура.