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

时间:2013-12-05 20:12:05

标签: ios ipad keyboard notifications

之前正如以下几个问题所述:

How to detect iPad user tap on keyboard hide button?

detect iPad keyboard Hiding button

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

然而,显然从iOS 6开始,这个通知已经在很多地方发送,而不仅仅是当用户点击缩进键盘按钮时。例如,即使键盘本身没有隐藏,也会在iPad旋转时发送该通知。

我发现了一个不太优雅的工作,我将在这里发布,以防其他人正在努力解决这个问题,但非常感谢人们发现这个问题的任何优雅解决方案。

1 个答案:

答案 0 :(得分:0)

我为此问题提出的当前解决方案是要注意,在此通知期间键盘实际缩回的唯一时间是用户是否实际点击了缩进按钮。在其他情况下,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;
}