2009-02-26 11 views
31

¿Cuál es el código para suscribirse a un evento como applicationWillResignActive en cualquier lugar de su aplicación iphone?¿Cómo reaccionar a la aplicaciónWillResignActive desde cualquier lugar?

[ACTUALIZACIÓN]

déjeme reformular mi pregunta. No deseo responder a esto en mi delegado de la aplicación, sino escuchar este evento de otra clase. ¿Es posible o necesito pasar el evento del delegado de la aplicación a la clase concerniente?

Respuesta

71

Parece que está buscando este código.

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

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

Uno también debe eliminar el observador en algún momento, por lo general en dealloc: \t [[NSNotificationCenter defaultCenter] removeObserver: self]; – LearnCocos2D

+0

@ LearnCocos2D ¿Por qué? – Houssni

+1

NSNotificationCenter puede fallar al enviar un mensaje a un observador desasignado. De los documentos: ["Asegúrese de invocar removeObserver: name: object: before notificationObserver o cualquier objeto especificado en addObserver: selector: name: object: es desasignado."] (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

Su tema y pregunta plantean cosas ligeramente diferentes.

Su aplicación recibirá la aplicaciónWillResignActive, junto con la aplicaciónWillTerminate, automáticamente. No es necesario suscribirse, solo implemente la función en su aplicación.

En cuanto a cómo responder, esto se debe a la aplicación. Si bien puede elegir no hacer nada, el comportamiento recomendado es que cese o desacelere cualquier funcionalidad no crítica. P.ej. si fueras un juego, dejarías de actualizar la pantalla y/o pausar el juego.

4

implementar el método de abajo en su delegado aplicación:

-(void)applicationWillResignActive:(UIApplication *)application 

Esto le permite reaccionar cuando la aplicación se vuelve inactiva - cuando este es el caso, se está ejecutando, pero no el envío de eventos entrantes. Esto sucede, por ejemplo, cuando aparece una ventana superpuesta o cuando el dispositivo está bloqueado.

Justo antes de que se vuelva inactiva, la aplicación también publica una UIApplicationWillResignActiveNotification.

11

Tome un vistazo a la documentación para el método que estamos hablando:

applicationWillResignActive:

Le indica el delegado que la aplicación quedará inactiva. Este método es opcional.

- (void)applicationWillResignActive:(UIApplication *)application 

[...]

Discusión

[...]

Justo antes de que se vuelve inactiva, la aplicación también publica un UIApplicationWillResignActiveNotification.

Cuestiones relacionadas