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的主要内容,如果未能解决你的问题,请参考以下文章