Как смоделировать сообщение applicationWillResignActive? - PullRequest
0 голосов
/ 21 ноября 2011

Как можно смоделировать applicationWillResignActive для вызова?

Экран блокировки, переход в главное меню, имитация телефонного звонка - похоже, никто не помог.

В случае, если я ожидаю, что вещи не произойдут, позвольте мне рассказать вам больше: я подписываюсь на это сообщение, и когда это произойдет, надеюсь, что уведомление будет отправлено способом, перечисленным ниже:

UIApplication *app = [UIApplication sharedApplication];

[[NSNotificationCenter defaultCenter] addObserver:self 
                 selector:@selector(applicationWillResignActive:) 
                 name: UIApplicationWillResignActiveNotification object:app];

1 Ответ

1 голос
/ 21 ноября 2011

Ваш код действителен, у меня работает. А блокировка экрана или нажатие кнопки «Домой» приведут к отправке этого уведомления.

* (Одно предостережение: если ваше устройство не поддерживает многозадачность или если для вашего свойства Application does not run in background установлено значение «*1003*». В этом случае оно перейдет прямо к «UIApplicationWillTerminateNotification». "уведомление"

Так, за исключением того, что есть две возможности:

1) Ваш код addObserver не вызывается, т.е. Это неверный метод.

Для проверки попробуйте это:

UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(applicationWillResignActive:) 
                                             name:UIApplicationWillResignActiveNotification 
                                           object:app];
NSLog(@"Observer added");

2) Метод наблюдателя вызывается неправильно. Для чего требуется тот же метод, что и в селекторе.

Для проверки попробуйте это:

-(void)applicationWillResignActive:(NSNotification *)notification{
    NSLog(@"applicationWillResignActive");
}
  • В качестве дополнительного пункта, если вы хотите увидеть в действии, какое из этих уведомлений вызывается и когда. В вашем классе AppDelegate поместите строку NSLog(@"%@", NSStringFromSelector(_cmd)); в каждый из -application... методов, и он будет регистрировать их при вызове. Это хороший способ познакомиться с ними.
...