2014-09-14 4 views
6

Я бегу один и тот же код на IOS 7 и IOS 8 устройств с разными результатамиkeyboardWillShow в IOS8 с UIKeyboardWillShowNotification

Предоставлено экран с двумя текстовыми полями

В IOS 7, если я прикасаюсь первое поле keyboardWillShow , но если я коснусь второго поля, когда клавиатура уже показана, это не называется второй раз.

В IOS 8 keyboardWillShow вызывается дважды

ли это документально поведение?

+0

Является ли один из них поле пароль? Тогда, возможно, это [thread] (https://devforums.apple.com/message/1029338#1029338). – dasdom

+0

@dasdom совершенно правильно. Я отключил исправление и проверку орфографии в Interface Builder, и он не вызывался дважды. Ответьте на вопрос, и я буду отмечать его как правильное. –

ответ

5

Причина в разнице в клавиатуре. Если второе поле является полем пароля, это означает, что под капотом имеется еще одна клавиатура. Поэтому уведомление отправляется дважды.

+1

Это не должно быть изменение поля с паролем. Мина прошла от UITextField до UITextView, и единственным отличием было то, что у первого есть параметр Коррекция, установленный на «Нет», а у последнего - «По умолчанию». Я переключил «Нет» на «По умолчанию», и теперь все в порядке. – CyberMew

0

лучше всего слушать keyboardWillChangeFrameNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrameNotification:) name:UIKeyboardWillChangeFrameNotification object:nil]; 
+2

Я только что попробовал это на бета-версии iOS 9.1, и наблюдатель 'UIKeyboardWillChangeFrameNotification' запускается каждый раз, когда вы выбираете новый UITextField, отображается ли клавиатура или нет. Обратите внимание, что у меня есть 3 текстовых поля, и все они используют разные типы клавиатуры (имя пользователя, адрес электронной почты, пароль). Может быть, если текстовые поля используют одну и ту же клавиатуру, тогда наблюдатель запускается только один раз ... – Litome

+0

Я тоже заметил, что вам нужно получить конец и запустить фрейм и сравнить, если они равны, если да, то вы, возможно, не нужны что-то делать –

+0

@Litome У меня такая же проблема. Удалось ли вам решить эту проблему? –

Смежные вопросы