Могу ли я получить сообщение, когда я показываю UIAlertView - PullRequest
2 голосов
/ 07 июля 2011

Я хочу получить сообщение, когда система покажет UIAlertView, чтобы я мог приостановить свою игру.

Кто-нибудь знает, как это выяснить?

UIAlertView не контролируется мной.

Ответы [ 4 ]

7 голосов
/ 14 июля 2011

Системное предупреждение обычно отображается в своем собственном UIWindow.Установите обработчики для уведомлений UIWindowDidBecomeVisibleNotification и UIWindowDidBecomeHiddenNotification, чтобы отслеживать, когда UIWindow становится видимым и скрытым соответственно:

 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(aWindowBecameVisible:)
                                              name:UIWindowDidBecomeVisibleNotification
                                            object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(aWindowBecameHidden:)
                                              name:UIWindowDidBecomeHiddenNotification
                                            object:nil];

В обработчиках возьмите UIWindow, который изменяет состояние с object свойство уведомления:

- (void)aWindowBecameVisible:(NSNotification *)notification
{
    UIWindow *theWindow = [notification object];
    NSLog(@"Window just shown: %@", theWindow);
}

- (void)aWindowBecameHidden:(NSNotification *)notification
{
    UIWindow *theWindow = [notification object];
    NSLog(@"Window just hidden: %@", theWindow);
}

Наконец, убедитесь, что theWindow содержит подпредставление типа UIAlertView.

2 голосов
/ 07 июля 2011

Делегат приложения applicationWillResignActive: будет вызываться при прерываниях.Вы можете справиться с паузой или даже прослушать UIApplicationWillResignActiveNotification в вашем контроллере вида и приостановить игру там.* Руководства по приложениям для iOS , в котором подробно описываются жизненный цикл приложения и переходы между состояниями.

1 голос
/ 07 июля 2011

Если ваш UIAlertView из стороннего приложения (а не из вашего приложения), вы можете реализовать следующие методы делегирования, чтобы приостановить и возобновить игру.

Чтобы приостановить игру

- (void)applicationWillResignActive:(UIApplication *)application {
}

Возобновить игру

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

Например, если вы получаете звонок или SMS, вы можете использовать вышеуказанного делегата для приостановки / возобновления игры.

0 голосов
/ 12 июля 2011

Просто сделайте это:

- (void)applicationWillResignActive:(UIApplication *)application {
//pause
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
//resume
}
...