У меня возникли проблемы с вызовом -becomeFirstResponder
на UITextField
, содержащемся с контроллером представления, который представлен модально. Я вызываю этот метод в -viewDidLoad
методе контроллера модального представления, чтобы клавиатура отображалась немедленно. Я ожидал, что и клавиатура, и контроллер модального представления будут анимировать одновременно снизу экрана. Однако я наблюдаю следующее:
- Задержка пользовательского интерфейса составляет ~ 0,2 секунды между нажатием кнопки, вызывающей метод
-presentModalViewController:animated:
на родительском контроллере представления, и моментом, когда контроллер дочернего представления начинает модально анимировать. - Как только начинается анимация модального контроллера представления, клавиатура сразу же отображается без всякой анимации.
- Как только анимация модального контроллера представления завершена, все остальное, кажется, работает плавно.
- Отказ от контроллера модального представления приводит к его плавной анимации за пределами экрана (по совпадению вместе с клавиатурой).
- Нажатие кнопки, которая представляет контроллер модального представления в любое время после первого раза, приводит к тому же шаблону, за исключением того, что нет задержки пользовательского интерфейса ~ 0,2 секунды.
Это как если бы анимация клавиатуры и анимация контроллера модального представления одновременно конкурировали за некий базовый ресурс анимации нижнего уровня, но я не понимаю, почему это должно происходить. Что еще больше подтверждает эту догадку, так это то, что если я не прошу UITextField
стать первым респондентом (то есть, если я не прошу клавиатуру представить себя), тогда нет абсолютно никакой задержки пользовательского интерфейса, и контроллер модального представления мгновенно оживляет.
Интересно, что если я сделаю что-то вроде [self.textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0001];
, то анимация клавиатуры происходит почти одновременно с анимацией контроллера модального представления - чрезвычайно трудно сказать, что они оба не анимируются в одно и то же время при запуске на Симулятор iPhone. Однако при работе на реальном устройстве легко заметить, что клавиатура не появляется до тех пор, пока не будет представлен контроллер модального представления. Однако важно то, что задержек пользовательского интерфейса больше нет.
Кто-нибудь испытывал что-нибудь подобное?