如何在 iOS 6+ 上检测用户何时强制隐藏 iPad 上的键盘

Posted

技术标签:

【中文标题】如何在 iOS 6+ 上检测用户何时强制隐藏 iPad 上的键盘【英文标题】:How to detect when the user force hides the keyboard on the iPad on iOS 6+ 【发布时间】:2013-12-05 20:12:05 【问题描述】:

之前在几个问题中提到过:

How to detect iPad user tap on keyboard hide button?

detect iPad keyboard Hiding button

...检测用户是否按下 iPad 上的隐藏键盘按钮的方法是订阅 UIKeyboardWillHideNotification 通知。

但是,显然从 ios 6 开始,此通知已在多个地方发送,而不仅仅是在用户按下缩回键盘按钮时。例如,即使键盘本身没有隐藏,当 iPad 旋转时也会发送该通知。

我发现了一个不优雅的解决方法,我将在此处发布,以防其他人遇到此问题,但非常感谢人们找到解决此问题的任何优雅解决方案。

【问题讨论】:

【参考方案1】:

我针对此问题提出的当前解决方案是注意,在此通知期间键盘实际缩回的唯一时间是用户实际按下缩回按钮。在其他情况下,UIKeyboardWillHideNotification 和 UIKeyboardDidHideNotification 之间的延迟几乎为 0。

static BOOL immediate;

- (void) checkImmediate 
    if (immediate) return;
    /* Do Stuff */

- (void) keyboardWillHide:(NSNotification*)note 
    immediate = NO;
    [self performSelector:@selector(checkImmediate) withObject:self afterDelay:.01 inModes:@[NSRunLoopCommonModes]];

- (void) keyboardDidHide:(NSNotification*)note 
    immediate = YES;

【讨论】:

观察window.firstResponder怎么样?我认为当键盘关闭时它会改变?

以上是关于如何在 iOS 6+ 上检测用户何时强制隐藏 iPad 上的键盘的主要内容,如果未能解决你的问题,请参考以下文章

检测浏览器何时接收文件下载

检测浏览器何时接收文件下载

检测浏览器何时接收文件下载

iOS 9:如何检测用户何时对推送通知请求说“不允许”? [复制]

如何检测应用程序何时在后台 Swift 中强制关闭 [重复]

我们如何在 iOS 7 上检测何时控制中心?