Как подавить слайд-анимацию виртуальной клавиатуры? - PullRequest
2 голосов
/ 16 февраля 2012

У меня проблема с созданием модального поискового представления, которое имитирует поведение приложения Weather.В частности, есть две анимации, которые меня беспокоят и привносят ненужные задержки 0,2 с:

  • Когда модальное представление становится видимым, я фокусируюсь на UISearchDisplayController.searchBar, вызывая становление становленияFirstResponder в viewDidAppear.Тем не менее, клавиатура не видна, когда модальный вид скользит, но ему нужно еще 0,2 с, чтобы скользить после завершения анимации перехода модального вида.Перемещение вызова на другой обратный вызов, например viewWillAppear или viewDidLoad, не принесло пользы, клавиатура не будет отображаться в первую очередь.

  • Когда пользователь нажимает кнопку отмены, появляетсядругая анимация происходит до вызова метода делегата searchDisplayControllerDidEndSearch, расширяющего текстовое поле поиска и «растапливающего» кнопку.Опять же, эта анимация не нужна, так как модальное представление должно переходить при нажатии кнопки.

  • Кроме того, когда я отклоняю и повторно представляю то же представление, не толькоклавиатура скользит после перехода, но кнопка отмены делает то же самое (к счастью, одновременно).

Мне известна похожая проблема, описанная здесь: Проблемы с анимацией клавиатуры при вызове становления сталФирстРеспондерв контроллере модального вида .Однако, похоже, что поведение панели поиска несколько отличается от поведения текстового поля.Я не смог воспроизвести шаги, описанные этим автором, чтобы сделать клавиатуру видимой, вызвав becomeFirstResponder в viewDidLoad.

С уважением, Крис

1 Ответ

1 голос
/ 04 августа 2012

Я думаю, что нашел ваш ответ. Когда вы добавляете панель поиска с помощью построителя интерфейса, вы можете сделать это двумя способами: «Панель поиска» и «Панель поиска и контроллер отображения поиска».

Я использовал второй, и у меня была та же самая проблема, которую вы описали. Я мог бы только вызвать клавиатуру (используя становлениеFirstResponder) на "viewDidAppear". Но если вы сделаете это, добавив только строку поиска, это сработает. Теперь я могу вызыватьcomeFirstResponder для «viewDidLoad», и клавиатура появляется вместе с самим представлением.

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

...