Приостановка игры, когда кто-то звонит / отправляет вам SMS - PullRequest
3 голосов
/ 22 января 2010

Я хочу реализовать эту функцию в своих приложениях, но не могу понять, как использовать эту строку кодов.

- (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 ]

6 голосов
/ 22 января 2010

Вместо того, чтобы отправлять сообщения самому себе (который является делегатом приложения), вы отправляете их своему контроллеру представления.

Например, если у делегата приложения было свойство для вашего основного игрового контроллера с именем «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 голос
/ 07 ноября 2010

Я знаю, что на это ответили давным-давно. Но я хотел добавить, что другое (более масштабируемое) решение состоит в том, чтобы заинтересованные стороны (например, UIViewControllers) регистрировали интерес к UIApplicationDidEnterBackgroundNotification и UIApplicationWillEnterForegroundNotification.

Преимущество этого подхода состоит в том, что делегату приложения не нужно иметь непосредственное знание объектов, которые могут понадобиться для ответа на ввод фона / переднего плана.

...