У меня есть раскадровка сцены, которая имеет только два UITextField
.Отель первые один осталась нетронутой, свежей из библиотеки объектов. Второй имеет выход делегата, подключенный к коду ViewController
.'resignFirstResponder() возвращает истину, и текстовое поле теряет фокус, но клавиатура не освобождает
The second text field's connection in IB
(К сожалению, я должен размещать изображения таким образом, потому что StackOverflow не позволит мне.)
код очень прост. Это все.
class ViewController: UIViewController, UITextFieldDelegate {
func textFieldDidBeginEditing(textField: UITextField) {
textField.resignFirstResponder()
}
}
Единственное, что он делает - это отпустить клавиатуру, когда она вот-вот появится.
Первый показывает клавиатуру в обычном режиме. Второй не отображает клавиатуру, потому что она сразу же увольняется.
Все работает отлично самостоятельно, пока я не щелкнул по первому текстовому полю, чтобы открыть клавиатуру, затем с помощью клавиатуры на экране, я нажимаю второе текстовое поле. Что происходит дальше, так это то, что второе текстовое поле теряет фокус, но клавиатура остается на экране.
Использование print(:)
, я проверил, что, когда я называю resignFirstResponder
на втором текстовом поле, это первый ответчик, и возвращаемое значение этого вызова не true
, и после вызова он больше не является первым ответчиком ,
Но клавиатура все еще там ...
Я попытался добавить print(:)
в textFieldShouldReturn(:)
метод делегата, и нажав на кнопку возврата после текстового поля в отставку. На консоли отладки ничего не было напечатано.
Я пробовал disablesAutomaticKeyboardDismissal()
, не возвращая ни false
, ни true
не производит никаких различий.
Редактировать
То, что я хочу, это просто: Я хочу первое текстовое поле, чтобы делать то, что он по умолчанию делать, а вторая один, чтобы отклонить его клавиатуру, как только он постучал (с точки зрения пользователя, в основном что означает не показывать его).
Я знаю textFieldShouldBeginEditing(:)
, но я не могу использовать его по разным причинам, я просто должен уволить клавиатуры на после она была активирована.
Редактировать Опять
Я попытался view.endEditing(true)
, а также. Фактически, я пробовал .endEditing(true)
на каждом изображении в сцене. Не работает.
Жаль, что я не сделал мои намерения яснее. Меня не интересует поведение первого текстового поля.Я хочу убрать клавиатуру для второго текстового поля. И я уже пробовал EndEditing. Кажется, это не работает. Пожалуйста, ознакомьтесь с моими изменениями к вопросу. – CCC
Я отредактировал свой ответ. Это хорошо для вас? –
Это работает! И замена цикла for-in вызовом 'endEditing (true)' также работает. Можете ли вы сказать мне, почему это работает? – CCC