Почему клавиатура не отображается, когда вид извлекается из стека навигации?

У меня есть несколько UITextField объекты на виде. Когда я нажимаю на них, я получаю клавиатуру и UIKeyboardWillShowNotification событие также. Когда я помещаю новый контроллер представления в стек, в то время как одно из текстовых полей является первым респондентом, клавиатура анимируется (как я и ожидал). Когда я затем нажимаю кнопку "Назад", текстовое поле становится первым респондентом, но клавиатура не возвращается. Когда я нажимаю на другое текстовое поле в том же виде, клавиатура снова не появляется. Было бы хорошо, если бы клавиатура не была открыта, когда я снова вошел в представление, но я не уверен, что может вызвать сбой при нажатии на другое текстовое поле. Почему это происходит, и как я могу это исправить?

Примечание: когда я ухожу в отставку, прежде чем покинуть экран, все работает нормально.

2 ответа

Решение

Я понял это, и, насколько я понимаю, это ошибка с кодом Apple. У меня есть свойство в одном из родительских представлений UITextField с именем firstResponder, Кажется, нет никаких причин, почему я не должен использовать это имя, но ясно, что Apple уже использовала его где-то в своем коде, и когда я создаю свойство с этим именем, это заставляет первый код респондента в структуре серьезно ошибка Решение состоит в том, чтобы назвать мою собственность как-нибудь еще.

Единственная причина, по которой отставка первого респондента заставляла вещи работать, была в том, что я также устанавливал свойство firstResponder равным nil.

Я полагаю, что клавиатура скрыта каким-то другим механизмом, кроме отставки первого респондента, поэтому система считает, что она уже отображает клавиатуру, и поэтому не чувствует необходимости показывать ее снова.

Если вы можете получить простой пример приложения с воспроизводимой реализацией, это звучит как ошибка в iOS, о которой вы должны сообщить в Apple.

Другие вопросы по тегам