У меня есть один ViewController с пользовательским классом представления. Я обработал уведомление с клавиатуры, добавив в метод viewWillAppear и удалив уведомление в viewDidDisappear.
Добавление уведомления в viewWillAppear:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardWillShow:)
name: UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardWillHide)
name: UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidHide)
name: UIKeyboardDidHideNotification object:nil];
Удалить уведомление из представленияDidDisappear:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object: nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object: nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object: nil];
и вызовите метод представления из метода уведомления viewController.
Проблема:
- После нажатия на UITextField появляется клавиатура и правильно выполняется анимация.
- Но после появления клавиатуры, если пользователь нажмет кнопку «Назад» на панели навигации, клавиатура не будет удалена после исчезновения ViewController с экрана.
- Теперь пользователь не может закрыть клавиатуру
Если я удалю код уведомления, тогда все сработает отлично.
До iOS 7.0 он отлично работал с кодом уведомления. Но в iOS 7.0 это не работает.
У меня есть print NSLog в каждом методе уведомления, в IOS 7.0 метод keyboardWillShow выполняется наконец, и снова появляется клавиатура. Но в iOS 6.0 клавиатура наконец не запустится.
Я также реализую методы UITextFieldDelegate.
заранее спасибо
keyboardWillShow
,keyboardWillHide
,keyboardDidHide
.. - person Akshit Zaveri   schedule 15.10.2013