Стань первым ответчиком без анимации
Есть ли способ, чтобы 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 работает так, как вы хотели:
он вызывается непосредственно перед тем, как контроллер представления отобразит это представление (что если вы не обрабатываете иерархию диспетчера представлений вручную), и как только он появится в навигационной клавиатуре, клавиатура уже представлена и текстовое поле имеет фокус.
Тем не менее, нет публичного способа, который я слышал, что позволит указать стиль внешнего вида клавиатуры.