Как подавить анимацию виртуальной клавиатуры?
Вопрос
У меня есть проблема с созданием модального представления поиска, который эмулирует поведение приложения погоды. В частности, есть две анимации, которые беспокоят меня и вводят ненужные задержки в 0,2 с:
Когда модальный вид становится видимым, я уделяю внимание
UISearchDisplayController.searchBar
с помощью переворотаviewDidAppear
. Анкет Тем не менее, клавиатура не видно, когда модальный вид включен, но ему нужно еще 0,2, чтобы скользить после завершения анимации перехода модального представления. Перемещая звонок к другому обратному обращению, какviewWillAppear
или жеviewDidLoad
Не очень хорошо, клавиатура не появится в первую очередь.Когда пользователь касается отмены, происходит еще одна анимация, прежде чем делегат
searchDisplayControllerDidEndSearch
Метод вызывается, расширяя поля текста поиска и «плавив» кнопку. Опять же, эта анимация не поддержана, так как модальный вид должен переходить, когда кнопка касается.Кроме того, когда я увольняю и повторно представляю один и тот же вид, не только клавиатура скользит после перехода, но и кнопка отмены делает то же самое (к счастью, одновременно).
Я знаю об аналогичной проблеме, описанной здесь: Проблемы с анимацией клавиш при вызове становятся FirStresponder в модальном контроллере представленияАнкет Тем не менее, кажется, что поведение строки поиска слабатно отличается от поведения текстового поля. Я не мог воспроизвести шаги, описанные этим автором, чтобы сделать клавиатуру видимой, вызывая becomeFirstResponder
в viewDidLoad
.
С уважением, Крис
Решение
Думаю, я нашел твой ответ. Когда вы добавляете панель поиска с помощью интерфейсного строителя, вы можете сделать это двумя способами: «строка поиска» и «строка поиска и поиск дисплеев».
Я использовал второй, и у меня была та же самая проблема, которую вы описали. Я мог только вызвать клавиатуру (используя FirStresponder) на "ViewDidapear". Но если вы сделаете это, добавив только строку поиска, это работает. Теперь я могу позвонить FirStresponder на «ViewDidload», и клавиатура появляется вместе с самим представлением.
Я имею в виду немного больше работы, но на самом деле не так много. Вы должны установить свой контроллер, чтобы стать делегатом строки поиска. Я добавил представление списка для результатов и заставил моего контроллера стать его делегатом и источником данных.