2010-01-22 69 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。

這種方法的優點是,應用程序委託人不需要直接瞭解可能需要響應輸入背景/前景的對象。