我有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
是模态视图控制器下面的那个。
答案 0 :(得分:7)
如果您正在使用UIViewController
,那么当视图在viewWillAppear:
中可见时,您可以为键盘通知注册实例,然后在视图隐藏在viewWillDisappear:
内时取消注册
这样,当视图不可见时,您将不会收到通知。
希望这有帮助!
答案 1 :(得分:3)
如果您只想在viewController可见时对该通知作出反应,那么只需检查函数开头是否可见:
- (void)keyboardWillShow:(NSNotification *)notification
{
if ([self.view window]) //means is visible
//do something
else
//return
}