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 に配置する必要があることを読みましたが、ゲームが現在ビューコントローラーにあるときに一時停止アクションを呼び出す方法がわかりません。

ありがとうございました。

4

2 に答える 2

6

メッセージを self (アプリ デリゲート) に送信する代わりに、View Controller に送信します。

たとえば、アプリ デリゲートに「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];
}
于 2010-01-22T04:51:18.140 に答える
1

これはずっと前に答え​​られたことを知っています。しかし、別の (よりスケーラブルな) 解決策は、利害関係者 (UIViewControllers など) に UIApplicationDidEnterBackgroundNotification と UIApplicationWillEnterForegroundNotification への関心を登録させることであると付け加えたいと思います。

このアプローチには、アプリケーション デリゲートが、バックグラウンド/フォアグラウンドに入ったときに応答する必要がある可能性のあるオブジェクトを直接認識する必要がないという利点があります。

于 2010-11-07T18:41:24.463 に答える