6

UIKeyboardWillShowNotification我有一个和的观察者UIKeyboardWillHideNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

这一切都有效,除了当 viewController 当前不可见时它有效。

我试过比较,self.navigationcontroller.topViewController但是当我有一个模态视图时这不起作用,因为它topViewController是模态视图控制器下面的视图。

4

2 回答 2

7

如果您正在使用UIViewController,您可以在视图内部可见时为键盘通知注册实例,viewWillAppear:然后在视图隐藏在内部时取消注册viewWillDisappear: 这样,当视图不可见时,您将不会收到通知。

希望这可以帮助!

于 2013-06-06T16:10:03.047 回答
3

如果您只想在 viewController 可见时对该通知做出反应,那么只需在函数开头检查是否可见:

- (void)keyboardWillShow:(NSNotification *)notification
{
    if ([self.view window]) //means is visible
        //do something
    else 
        //return
}
于 2013-06-06T15:52:59.130 回答