Как автоматически загрузить клавиатуру (iOS SDK)? - PullRequest
24 голосов
/ 22 апреля 2011

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

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

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

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

Ответы [ 4 ]

63 голосов
/ 22 апреля 2011

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

7 голосов
/ 23 апреля 2011

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

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

2 голосов
/ 20 мая 2014

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

Как пояснение к ответу Марка Граноффа;

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

...