Имам един ViewController с персонализиран клас на изглед. Обработих известието от клавиатурата, като добавих към метода viewWillAppear и премахнах известието във viewDidDisappear.
Добавянето на известие в изгледа ще се появи:
[[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];
Премахване на известието във viewDidDisappear:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object: nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object: nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object: nil];
и извикайте метода на view от метода за уведомяване на viewController.
Проблем:
- След като докоснете UITextField, клавиатурата се появява и правилно анимацията е готова
- Но след като се появи клавиатурата, ако потребителят натисне бутона за връщане назад от лентата за навигация, клавиатурата няма да се премахне, след като ViewController изчезне от екрана.
- Сега потребителят не може да затвори клавиатурата
Ако премахна кода за известяване, тогава работи перфектно.
Преди iOS 7.0 работи перфектно с кода за уведомяване. Но в iOS 7.0 не работи.
Имам печат на NSLog във всеки метод за уведомяване, в IOS 7.0 методът keyboardWillShow се изпълнява най-накрая и отново се появява клавиатура. Но в iOS 6.0 keyboardWillShow най-накрая не се изпълнява.
Също така прилагам UITextFieldDelegate методи.
Благодаря предварително
keyboardWillShow
,keyboardWillHide
,keyboardDidHide
.. - person Akshit Zaveri   schedule 15.10.2013