UIKeyboardWillShowNotification

时间:2013-06-06 15:42:38

标签: ios objective-c

我有UIKeyboardWillShowNotificationUIKeyboardWillHideNotification的观察员。

[[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是模态视图控制器下面的那个。

2 个答案:

答案 0 :(得分:7)

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

希望这有帮助!

答案 1 :(得分:3)

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

- (void)keyboardWillShow:(NSNotification *)notification
{
    if ([self.view window]) //means is visible
        //do something
    else 
        //return
}