KeyboardWillShowNotification 不适用于 iOS > 6.1
Posted
技术标签:
【中文标题】KeyboardWillShowNotification 不适用于 iOS > 6.1【英文标题】:UIKeyboardWillShowNotification doesnt work from iOS > 6.1 【发布时间】:2013-05-17 19:55:46 【问题描述】:初始化部分:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification object:nil];
一些方法:
- (void) keyboardWillShow:(NSNotification*) aNotification
// TO DO
Dealloc 部分:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
所以在 ios 6.1 中显示视图后不会调用 keyboardWillShow... 在 iOS 6.0 中,此代码完美运行。
【问题讨论】:
您只是在 iPad 上遇到此问题,还是在 iPhone 和 iPod touch 上也存在此问题? 我的代码和你的一模一样,除了dealloc,我不使用它。你能再贴一些代码吗? 它非常适合我,我一直在使用它。适用于 iPad 以及 iPhone 和 iOS 6.1.x 以及 iOS 6.0 ......(虽然我在任何时候都不会删除观察者,而且大多数时候,我会留下没有参数的目标方法或使用(id)object 代替) 确保在显示键盘之前不会调用您的 dealloc 部分(我不知道在哪里)。 【参考方案1】:在哪个“初始化部分”中添加了观察者?例如,如果您的视图控制器来自故事板,那么它应该位于 - (id)initWithCoder:(NSCoder *)decoder
。
然而,我的建议是在viewWillAppear
中设置观察者并在viewWillDisappear
中删除它们。这样设置和拆除是“平衡的”,并且仅在视图控制器的内容可见时才处于活动状态。
【讨论】:
以上是关于KeyboardWillShowNotification 不适用于 iOS > 6.1的主要内容,如果未能解决你的问题,请参考以下文章