2010-07-18 11 views
8

Tengo una aplicación de navegación de profundización con tres niveles de UIViewControllers. En cada controlador de vista, tengo un UITextField en el que intento subclasificar el UIKeyboard para cada uno. Mi pregunta es dónde "configurar" las notificaciones y "desarmarlas".Práctica recomendada para UI Notificaciones de teclado - SDK de iPhone

tengo las notificaciones:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 

lo que es mejor para fijar ellos en el caso viewDidLoad? O el evento viewWillAppear?

y lo mismo para [[NSNotificationCenter defaultCenter] removeObserver:self];

no quiero tener múltiples keyboardWillShow: eventos que se llamará como yo desglosar.

Muchas gracias, Brett

Respuesta

7

le sugiero que ponga estos en los métodos init y dealloc, como el viewWillAppear y viewWillDisappear se llamará cada vez que la vista aparece o desaparece, que es innecesaria para registrar/dar de baja notificaciones

+0

viewDidUnload: obsoleto en iOS 6.0. Las vistas ya no se purgan en condiciones de poca memoria, por lo que este método nunca se llama. – Vamos

+0

Registrarse en init, anular el registro en dealloc – jjxtra

+0

depende de cuándo quiere lograr qué – drct

5

Me gustaría sugerir, sin embargo, se registra como observador en viewWillAppear y anular el registro en viewWillDisappear desde viewDidUnload se llama sólo cuando la memoria tiene que ser liberado, lo que significa viewDidLoad ser llamado mucho más a menudo que viewDidUnload y entonces usted podría tener el problema de conseguir la misma notificación más de una vez.

Cuestiones relacionadas