Задержка закрытия клавиатуры iOS 8 после закрытия контроллера модального представления

В iOS 8+ я заметил, что если у вас есть текстовое поле, которое в настоящее время является firstResponder в представленном контроллере представления, когда контроллер представления закрывается, клавиатура зависает примерно на 1 секунду, прежде чем будет закрыта.

Это происходит как для iOS 8.0 и 8.1, так и для не 7.1.

Есть идеи, почему это так?


person micap    schedule 04.12.2014    source источник


Ответы (2)


В соответствии с этим в iOS 8 кажется, что представление не отказывается от статуса первого ответившего до тех пор, пока оно не окажется за пределами экрана.

http://prod.lists.apple.com/archives/cocoa-dev/2014/Sep/msg00391.html

Наш обходной путь — вызвать [self.view endEditing:YES] в -viewWillDisappear.

person micap    schedule 22.12.2014
comment
Когда я пытаюсь это сделать, клавиатура начинает исчезать, но затем возвращается обратно прямо перед тем, как контроллер представления по какой-то причине закрывается... - person ryanthon; 26.12.2014
comment
Все еще происходит в iOS 9 - view.endEditing(true) - person DogCoffee; 04.12.2015

Для Swift 3/4

override func viewWillDisappear(_ animated: Bool) {
    self.view.endEditing(true)
}

Кроме того, если он не уходит в отставку, попробуйте вызвать resignFirstResponder в текстовом поле, в котором вы пытаетесь закончить ввод.

override func viewWillDisappear(_ animated: Bool) {
    textField.resignFirstResponder()
}
person ricks    schedule 30.03.2018
comment
Не забудьте позвонить super.viewWillDisappear(animated). - person Tim Vermeulen; 03.05.2018
comment
@TimVermeulen Да! Отличный комментарий. Если Рикс добавит это к своему ответу, я поддержу его. - person mskolnick; 28.02.2020