2009-02-26 9 views
31

Jaki jest kod subskrypcji zdarzenia takiego jak applicationWillResignActive w dowolnym miejscu w aplikacji iPhone?Jak reagować na applicationWillResignActive z dowolnego miejsca?

[UPDATE]

Pozwól mi przeformułować na moje pytanie. Nie chcę odpowiadać na to w moim delegacie aplikacji, ale raczej słuchać tego wydarzenia z innej klasy. Czy to możliwe, czy muszę przekazać wydarzenie od delegata aplikacji do odpowiedniej klasy?

Odpowiedz

71

Wygląda na to, że szukasz tego kodu.

- (void) applicationWillResign { 
    NSLog(@"About to lose focus"); 
} 

- (void) myMethod { 
    [[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(applicationWillResign) 
     name:UIApplicationWillResignActiveNotification 
     object:NULL]; 
} 
+10

Trzeba również usunąć obserwatora w pewnym momencie, zazwyczaj w dealloc: \t [[NSNotificationCenter defaultCenter] removeObserver: self]; – LearnCocos2D

+0

@ LearnCocos2D Dlaczego? – Houssni

+1

NSNotificationCenter może zawiesić wysyłanie wiadomości do zwolnionego obserwatora. Z dokumentacji: ["Pamiętaj, aby wywołać removeObserver: name: object: before notificationObserver lub dowolny obiekt określony w addObserver: selector: name: object: is deallocated."] (Https://developer.apple.com/library/mac /documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/index.html#//apple_ref/occ/instm/NSNotificationCenter/addObserver:selector:name: Object :) – LearnCocos2D

0

Twój temat i pytanie wymagają nieco innych rzeczy.

Twoja aplikacja automatycznie otrzyma aplikacjęWillResignActive wraz z applicationWillTerminate. Subskrypcja nie jest wymagana, wystarczy zaimplementować funkcję w swojej aplikacji.

Jeśli chodzi o sposób udzielania odpowiedzi, jest to zależne od aplikacji. Chociaż nie można nic zrobić, zalecanym zachowaniem jest zaprzestanie lub spowolnienie jakiejkolwiek niekrytycznej funkcji. Na przykład. jeśli grasz, przestaniesz aktualizować ekran i/lub wstrzymywać grę.

4

Wdrożenie metody poniżej w delegata aplikacji:

-(void)applicationWillResignActive:(UIApplication *)application 

To pozwala reagować, gdy aplikacja przestaje być aktywny - gdy jest to przypadek, ale nie realizuje wysyłki nadchodzące wydarzenia. Dzieje się tak na przykład, gdy pojawia się okno nakładki lub gdy urządzenie jest zablokowane.

Tuż przed chwilą staje się nieaktywna, aplikacja publikuje również UIApplicationWillResignActiveNotification.

11

Spójrz na dokumentacji dla metody mówisz:

applicationWillResignActive:

opowiada delegata, że ​​aplikacja staje się nieaktywna. Ta metoda jest opcjonalna.

- (void)applicationWillResignActive:(UIApplication *)application 

[...]

Dyskusja

[...]

Tuż przed staje się nieaktywna, aplikacja również księguje UIApplicationWillResignActiveNotification.

Powiązane problemy