Отображение клавиатуры в нужное время iOS7
В iOS 6 я использую для представления клавиатуры в viewDidLoad
.
- (void)viewDidLoad
{
[super viewDidLoad];
[txtField becomeFirstResponder];
}
Таким образом, когда navigationController нажимает новый viewController, клавиатура уже существует, плавно анимируя слева направо и избегая восходящей анимации.
В iOS 7 это поведение кажется сломанным.
Если я добавлю [txtField becomeFirstResponder]
в viewDidLoad
, клавиатура появится в середине нажатия анимации, уже в ее конечной позиции: неприятный эффект!
Я попытался переместить [txtField becomeFirstResponder]
в viewWillAppear
, но окончательный результат не изменился.
Знаете ли вы способ вернуть поведение iOS 6, нажав новый контроллер viewController и клавиатуру вместе?
EDIT: использование таймера не работает ни... независимо от того, какая временная задержка задана, клавиатура отображается только в конце нажатия анимации.
До сих пор я лучше всего поставил [txtField becomeFirstResponder]
в viewWillLayoutSubviews
или viewDidLayoutSubviews
. К сожалению, это работает при нажатии viewController, но не при возврате (клавиатура не появляется).
Ответы
Ответ 1
Мне удалось экстраполировать ваше обходное решение в viewWillLayoutSubviews
, чтобы заставить его работать.
- (void)viewWillLayoutSubviews {
if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) {
[self.textField1 becomeFirstResponder];
}
}
Это работает для меня как для нажатия на стек, так и после отклонения модального контроллера представления.