resignFirstResponder() возвращает true, и текстовое поле теряет фокус, но клавиатура не игнорирует
У меня есть сцена раскадровки, которая имеет только два UITextField
Первый из них остался нетронутым, только что из библиотеки объектов. Второй имеет выход для делегата, подключенный к ViewController
код.
Подключение второго текстового поля в IB
(Извините, я должен опубликовать изображения таким образом, потому что Stackru не позволяет мне.)
Код действительно прост. Это все из этого.
class ViewController: UIViewController, UITextFieldDelegate {
func textFieldDidBeginEditing(textField: UITextField) {
textField.resignFirstResponder()
}
}
Единственное, что он делает, - отпускает клавиатуру, когда она собирается подняться.
Первый показывает клавиатуру нормально. Второй не показывает клавиатуру, потому что он немедленно уволен.
Все это прекрасно работает само по себе, пока я не нажму первое текстовое поле, чтобы вызвать клавиатуру, затем, когда клавиатура находится на экране, я нажму второе текстовое поле. Затем происходит следующее: второе текстовое поле теряет фокус, но клавиатура остается на экране.
С помощью print(:)
Я подтвердил, что когда я звоню resignFirstResponder
во втором текстовом поле это первый респондент, а возвращаемое значение этого вызова true
и после звонка перестает быть первым респондентом.
Но клавиатура все еще там...
Я пытался добавить print(:)
в делегате textFieldShouldReturn(:)
метод и нажав клавишу возврата после того, как текстовое поле ушло в отставку. В консоли отладки ничего не печаталось.
Я старался disablesAutomaticKeyboardDismissal()
, не возвращая ни false
ни true
производит любую разницу.
редактировать
То, что я хочу, это просто: я хочу, чтобы первое текстовое поле делало то, что по умолчанию, а второе - отклонение клавиатуры, как только она нажата (с точки зрения пользователя, в основном это означает не показывать ее).
я знаю textFieldShouldBeginEditing(:)
, но я не могу использовать его по разным причинам, я просто должен закрыть клавиатуру после ее активации.
Редактировать снова
Я старался view.endEditing(true)
также. На самом деле я пытался .endEditing(true)
на каждом взгляде в сцене. Не работает
1 ответ
Попробуйте что-то вроде этого:
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
view.endEditing(true)
return true
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.resignFirstResponder()
//make here whatever you like
}