Подтвердить что ты не робот

Как автоматически загрузить клавиатуру (SDK для iOS)?

действительно простой вопрос:

У меня есть представление, состоящее из двух текстовых полей. При загрузке представления я хочу, чтобы клавиатура автоматически всплывала и фокусировала первое поле.

Как мне это сделать? (В коде? В IB?)

Спасибо большое! васаби

4b9b3361

Ответ 1

В вашем методе viewDidAppear: вызывается [yourTextField becomeFirstResponder].

Ответ 2

[myTextField becomeFirstResponder] должен сделать трюк.

Также убедитесь, что вы реализуете методы UITextFieldDelegate, где вы можете скрыть первого ответчика.

Ответ 3

В качестве пояснения к ответу MarkGranoff;

Если вы поместите [yourTextField becomeFirstResponder] внутри viewDidLoad или viewWillAppear - он покажет клавиатуру, не дожидаясь секунды или двух (что произойдет, если вы поместите вызов becomeFirstResponder внутри метода viewDidAppear).

Ответ 4

Ну, я знаю, что на этот вопрос уже много ответов. Требуется время для отображения клавиатуры после вызова метода 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];
}