如何阻止键盘阻止iOS上的外部通知关闭按钮?

时间:2011-08-08 09:22:44

标签: iphone ios user-interface uialertview

我有一个带有文本字段的UIAlertView。此视图正常工作;它出现在屏幕的上半部分,所以当键盘出现时,按钮和文本条目仍然可见并且可以点亮。

但是,如果来自其他应用程序的本地或远程通知进入,而文本字段是第一响应者并且键盘已启动,则它会隐藏我的警报并将新警报放在键盘后面。如果警报超过一行,则无法单击其按钮,用户无法将其关闭。它并没有通过任何正常机制解除我的警报视图 - 我的代理人都没有调用alertView:clickedButtonAtIndex:alertView:cancel: - 而是简单地使用某种未知机制暂时隐藏它。

当通知隐藏我的警报视图时,我是否可以收到通知,因此我可以解除键盘并让用户处理通知?是否还有其他事件可以用来捕捉这个案例?

2 个答案:

答案 0 :(得分:2)

注册申请UIApplicationWillResignActiveNotification;当你得到它时,关闭你的警报视图。来自文档:

  

可以说活跃的应用程序具有焦点。它在启动后获得焦点,在弹出覆盖窗口时失去焦点或在设备被锁定时失去焦点,并在设备解锁时获得焦点。

警报视图(例如来自其他应用的通知所显示的视图)是叠加窗口。注意该通知,关闭提醒,以便键盘不会妨碍,并准备好在您的应用获得UIApplicationDidBecomeActiveNotification时重新显示提醒。

答案 1 :(得分:0)

我希望这会有所帮助......

- (void)willPresentAlertView:(UIAlertView *)alertView {
   if (newAlertViewWhichBlocks.tag == alertView.tag) {
    [yourTextField resignFirstResponder];
   }
}

请记住设置警告视图的委托。