Ну, я знаю, что на этот вопрос уже отвечали много раз. После вызова метода viewDidAppear
требуется время для отображения клавиатуры.
Причина, по которой viewDidAppear
- последний метод, который вызывается в жизненном цикле зрения после его исчезновения, конечно. Также необходимо создать клавиатуру, если она не найдена в памяти. Итак, в первый раз это занимает больше времени, чем я ожидал. Эти причины вызывают небольшую задержку, которая меня беспокоит.
Я всегда вызываю метод becomeFirstResponder
в методе viewWillAppear
, чтобы уменьшить время отображения клавиатуры, но мне нужно было отображать клавиатуру сразу после viewDidAppear
метода, чтобы не потерять плавную анимацию.
Итак, этот маленький трюк, который я придумал, работает как шарм. Я проверял это как на симуляторе, так и на устройствах. Если это не работает должным образом в вашем случае, у вас нет другого выбора, кроме как заставить его работать, как описано в принятом ответе.
Что я делаю, так это создаю UITextField
(вы можете использовать любое представление, которое взаимодействует с клавиатурой) и вызываете методы create и оставляете методы первого респондента, чтобы поместить мою клавиатуру в память, если она еще не создана , Итак, во второй раз вы получите клавиатуру в кеше, которая ускорит время отображения клавиатуры. Ну, я поместил этот код в предыдущий контроллер представления, который я собираюсь отобразить после клавиатуры.
Вот код:
- (void)viewDidAppear:(BOOL)animated
{
UITextField *textField = [[UITextField alloc]init];
[self.view addSubview:textField];
[textField becomeFirstResponder];
[textField resignFirstResponder];
[textField removeFromSuperview];
}