2010-01-22 72 views
3

我想在我的应用程序上实现此功能,但我似乎无法弄清楚如何使用这行代码。有人打电话/短信时暂停游戏

- (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但我似乎无法找出我怎么能叫我暂停行动时,游戏目前正处于视图 - 控制。

谢谢。

回答

6

而不是将消息发送给自己(这是应用程序委托),您可以将它们发送到您的视图控制器。

例如,如果您的应用程序委托有一个属性名为“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]; 
} 
+0

没问题。我以后回家时会尝试一下。谢谢gerry3。 – Drahc 2010-01-22 05:14:40

+0

好吧我尝试了你所说的,但现在我得到了很多错误。事情是,我的主要gamelogic不是在mymainViewController中,而是在它自己的xib文件上的一个单独的视图。我得到“要求成员不是结构或联盟”。谢谢。 – Drahc 2010-01-22 12:42:33

+0

我使用“gameViewController”这个名称来表示任何视图控制器都有您的游戏逻辑,以便将您的方法暂停并恢复到其中。通常这个错误意味着你没有定义一个属性或者将属性导入到头部。 – gerry3 2010-01-22 20:20:05

1

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

这种方法的优点是,应用程序委托人不需要直接了解可能需要响应输入背景/前景的对象。