iOS 9.0 - 获取键盘将显示/隐藏来自其他应用程序的通知
Posted
技术标签:
【中文标题】iOS 9.0 - 获取键盘将显示/隐藏来自其他应用程序的通知【英文标题】:iOS 9.0 - getting keyboard will show/hide notifications from other apps 【发布时间】:2015-11-12 09:04:52 【问题描述】:我的视图控制器注册到键盘通知(keyboardWillShow、keyboardWillHide)。
我启动我的应用程序。它显示了注册到键盘通知的视图控制器。键盘不可见。
我切换到短信应用程序并开始编写文本。在我写作时,我的应用会收到通知。通知在屏幕顶部显示为横幅。
当我点击横幅时,我的应用会打开并立即收到键盘通知。
据我所知,这个键盘通知与短信的键盘有关。
如何识别键盘事件是否来自我的应用?
【问题讨论】:
一个问题,你为什么不使用 textfield/textview 代表来了解键盘通知?它们将是您的应用内编辑活动独有的。 在这里查看我的答案***.com/a/40031687/2774520 这能回答你的问题吗? keyboardWillShow gets called for other app's keyboards 【参考方案1】:您可以在viewWillDisappear
中删除对观察者的监听(键盘通知),并可以在viewWillAppear
中重新开始监听观察者,这可能会解决问题
- (void)registerForKeyboardNotifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterBackground:)
name:UIApplicationWillResignActiveNotification
object:nil];
- (void)viewWillAppear:(BOOL)animated
[super viewWillDisappear:animated];
[self registerForKeyboardNotifications];
- (void)deregisterForKeyboardNotifications
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[center removeObserver:self name:UIKeyboardWillHideNotification object:nil];
[center removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
[self deregisterForKeyboardNotifications];
【讨论】:
以上是关于iOS 9.0 - 获取键盘将显示/隐藏来自其他应用程序的通知的主要内容,如果未能解决你的问题,请参考以下文章