我可以在显示UIAlertView时收到消息

时间:2011-07-07 07:20:20

标签: iphone notifications uialertview

我想在系统显示UIAlertView时收到消息,这样我就可以暂停游戏了。

任何人都知道怎么弄明白?

UIAlertView不受我自己控制。

4 个答案:

答案 0 :(得分:7)

系统警报通常显示在其自己的UIWindow中。安装UIWindowDidBecomeVisibleNotificationUIWindowDidBecomeHiddenNotification通知的处理程序,以便分别跟踪UIWindow何时可见和隐藏:

 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(aWindowBecameVisible:)
                                              name:UIWindowDidBecomeVisibleNotification
                                            object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(aWindowBecameHidden:)
                                              name:UIWindowDidBecomeHiddenNotification
                                            object:nil];

在处理程序中,从通知的UIWindow属性中获取更改状态的object

- (void)aWindowBecameVisible:(NSNotification *)notification
{
    UIWindow *theWindow = [notification object];
    NSLog(@"Window just shown: %@", theWindow);
}

- (void)aWindowBecameHidden:(NSNotification *)notification
{
    UIWindow *theWindow = [notification object];
    NSLog(@"Window just hidden: %@", theWindow);
}

最后,检查theWindow是否包含UIAlertView类型的子视图。

答案 1 :(得分:2)

将在中断时调用应用程序委托的applicationWillResignActive:。您可以在那里处理暂停,或者您甚至可以在视图控制器中收听UIApplicationWillResignActiveNotification并暂停游戏。

您可以查看 iOS应用指南this part,其中详细说明了应用和状态转换的生命周期。

答案 2 :(得分:1)

如果您的UIAlertView来自第三方应用(不是来自您的应用),那么您可以实施以下代理方法来暂停和恢复游戏。

暂停游戏

- (void)applicationWillResignActive:(UIApplication *)application {
}

恢复游戏

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

例如,如果您接到电话或短信,您可以使用上述代表暂停/恢复游戏。

答案 3 :(得分:0)

这样做:

- (void)applicationWillResignActive:(UIApplication *)application {
//pause
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
//resume
}