Стань первым ответчиком без анимации

Есть ли способ, чтобы UITextField стал первым ответчиком без анимации клавиатуры? То есть, сделайте так, чтобы клавиатура просто появилась?

В основном, я нажимаю второй UIViewController на UIViewController, у которого есть UITextField, и когда этот второй контроллер представления выскочит из стека, я хочу, чтобы UITextField сразу получил статус первого ответчика так что, когда второй контроллер отображения выскочит, пользователь никогда не замечает, что текстовое поле не было первым ответчиком.

Сейчас у меня это есть, так что, когда он появляется, клавиатура анимирует экран, но я не хочу, чтобы это было видно.

Любые идеи?

Ответ 1

Вы можете использовать анимацию UIView, например,

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.0];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];

[textField becomeFirstResponder];  // <---- Only edit this line

[UIView commitAnimations];

Это вызовет внезапное появление клавиатуры.

Вы можете сделать то же самое, но с -resignFirstResponder

Swift..

    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(0.0)
    UIView.setAnimationDelay(0.0)
    someTextView.resignFirstResponder()
    UIView.commitAnimations()

Ответ 2

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

-(void)viewWillAppear:(BOOL)animated {
    if ([self isViewLoaded] && self.textField)
        [self.textField becomeFirstResponder];
        [super viewWillAppear:animated];
}

Я поставил короткий проект образца на dropbox, используя этот код, если вы хотите.

Ответ 3

Я уверен, какую версию iOS вы используете или в какой момент вы называете becomeFirstResponder Вызов [textFieldReference becomeFirstResponder] в viewWillAppear: для iOS5/iOS6 работает так, как вы хотели:

он вызывается непосредственно перед тем, как контроллер представления отобразит это представление (что если вы не обрабатываете иерархию диспетчера представлений вручную), и как только он появится в навигационной клавиатуре, клавиатура уже представлена ​​и текстовое поле имеет фокус.

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