UIKeyboardWillShowNotification在iOS > 6.1无效。

4

初始化区段:

[[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 
}

释放内存区域:

[[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也存在这个问题? - rmaddy
我的代码和你的一模一样,唯一的区别就是 dealloc,我不使用它。你能发一些更多的代码吗? - jturolla
它对我来说完美地工作,我一直在使用它。它可以在iPad和iPhone上运行,在iOS 6.1.x和iOS 6.0上也可以运行...(虽然我没有在任何时候删除观察者,并且大多数时间,我将目标方法保留为空参数或使用(id)object) - Toastor
1
确保在显示键盘之前不要调用dealloc部分(我不知道在哪里)。 - danypata
1个回答

2
在哪个“init section”中添加观察者?例如,如果您的视图控制器来自故事板,则应该在 - (id)initWithCoder:(NSCoder *)decoder 中设置。但是,我的建议是在 viewWillAppear 中设置观察者,并在 viewWillDisappear 中删除它们。这样,设置和拆卸是“平衡的”,并且仅在视图控制器的内容可见时才处于活动状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接