Ответ 1
В вашем методе viewDidAppear:
вызывается [yourTextField becomeFirstResponder]
.
действительно простой вопрос:
У меня есть представление, состоящее из двух текстовых полей. При загрузке представления я хочу, чтобы клавиатура автоматически всплывала и фокусировала первое поле.
Как мне это сделать? (В коде? В IB?)
Спасибо большое! васаби
В вашем методе viewDidAppear:
вызывается [yourTextField becomeFirstResponder]
.
[myTextField becomeFirstResponder]
должен сделать трюк.
Также убедитесь, что вы реализуете методы UITextFieldDelegate
, где вы можете скрыть первого ответчика.
В качестве пояснения к ответу MarkGranoff;
Если вы поместите [yourTextField becomeFirstResponder]
внутри viewDidLoad
или viewWillAppear
- он покажет клавиатуру, не дожидаясь секунды или двух (что произойдет, если вы поместите вызов becomeFirstResponder
внутри метода viewDidAppear).
Ну, я знаю, что на этот вопрос уже много ответов. Требуется время для отображения клавиатуры после вызова метода viewDidAppear
.
Причина, по которой viewDidAppear
является последним методом, который вызывается в жизненном цикле зрения после его исчезновения, конечно. Кроме того, клавиатура также должна быть создана, если она не может быть найдена в памяти. Итак, в первый раз требуется больше времени, как я ожидал. Эти причины вызывают небольшую задержку, которая меня раздражает.
Я всегда вызываю метод becomeFirstResponder
в методе viewWillAppear
, чтобы уменьшить время отображения для клавиатуры, но мне нужно было отображать клавиатуру сразу после viewDidAppear
, чтобы не потерять плавную анимацию.
Итак, этот маленький трюк, который я придумал, работает как шарм. Я тестировал его как на тренажере, так и на устройствах. Если это не работает должным образом в вашем случае, у вас нет другого выбора, но он будет работать, как описано в принятом ответе.
Хорошо, что я делаю, это создать UITextField
(вы можете использовать любое представление, которое взаимодействует с клавиатурой) и вызвать старт и отменить методы первого ответа, чтобы поместить мою клавиатуру в память, если она еще не создана, Итак, во второй раз вы получите клавиатуру в кеше, которая ускоряет время отображения клавиатуры. Ну, я поставил этот код на предыдущий контроллер представления, после чего я буду отображать клавиатуру.
Вот код:
- (void)viewDidAppear:(BOOL)animated
{
UITextField *textField = [[UITextField alloc]init];
[self.view addSubview:textField];
[textField becomeFirstResponder];
[textField resignFirstResponder];
[textField removeFromSuperview];
}