我想在系统显示UIAlertView时收到消息,这样我就可以暂停游戏了。
任何人都知道怎么弄明白?
UIAlertView不受我自己控制。
答案 0 :(得分:7)
系统警报通常显示在其自己的UIWindow
中。安装UIWindowDidBecomeVisibleNotification
和UIWindowDidBecomeHiddenNotification
通知的处理程序,以便分别跟踪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
}