当有人打电话/发短信给你时暂停游戏

时间:2010-01-22 04:06:55

标签: iphone objective-c uiapplicationdelegate

我想在我的应用上实现此功能,但我似乎无法弄清楚如何使用这行代码。

- (void)applicationWillResignActive:(UIApplication *)application {
 //our app is going to loose focus since there is an incoming call
 [self pauseGame];
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
 //the user declined the call and is returning to our app
 [self resumeGame];
}

我已经读过这个必须放在appdelegates但我似乎无法弄清楚当游戏当前在viewcontroller中时我怎么能调用我的暂停动作。

谢谢。

2 个答案:

答案 0 :(得分:6)

您可以将消息发送给自己的视图控制器,而不是将消息发送给自己(也就是应用代理)。

例如,如果你的app委托有一个名为“gameViewController”的主游戏视图控制器的属性(实现暂停和恢复的方法):

- (void)applicationWillResignActive:(UIApplication *)application {
    // our app is going to loose focus since there is an incoming call
    [self.gameViewController pauseGame];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // the user declined the call and is returning to our app
    [self.gameViewController resumeGame];
}

答案 1 :(得分:1)

我知道很久以前就回答了这个问题。但我想补充说,另一个(更具可扩展性)的解决方案是让感兴趣的各方(例如,UIViewControllers)注册对UIApplicationDidEnterBackgroundNotification和UIApplicationWillEnterForegroundNotification感兴趣。

这种方法的优点是,Application Delegate不需要直接了解可能需要响应输入后台/前景的对象。