2010-07-18 5 views
8

J'ai une application de navigation détaillée avec trois niveaux de contrôleurs UIView. Dans chaque contrôleur de vue, j'ai un UITextField où j'essaye de sous-classer le UIKeyboard pour chacun. Ma question est de savoir où "définir" les notifications et les "désactiver".Meilleure pratique pour les notifications UIKeyboard - SDK iPhone

Je les notifications:

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

il le mieux pour les mettre dans le cas viewDidLoad? Ou l'événement viewWillAppear?

Et aussi pour [[NSNotificationCenter defaultCenter] removeObserver:self];

Je ne veux pas avoir de multiples événements keyboardWillShow: d'être appelé comme je perce vers le bas.

Un grand merci, Brett

Répondre

7

Je vous suggère de mettre ces derniers dans les init et dealloc méthodes, comme viewWillAppear et viewWillDisappear seront appelés à chaque fois que la vue apparaît ou disparaît, qui est inutile pour l'enregistrement/désenregistrement notifications

+0

viewDidUnload: obsolète dans iOS 6.0. Les vues ne sont plus purgées dans des conditions de mémoire insuffisante et cette méthode n'est jamais appelée. – Vamos

+0

Inscrivez-vous dans init, désinscrire dans dealloc – jjxtra

+0

dépend de quand vous voulez atteindre ce – drct

5

Je vous suggère néanmoins inscrit en tant qu'observateur viewWillAppear et unregister dans viewWillDisappear depuis viewDidUnload est appelée que lorsque la mémoire doit être libéré, ce qui signifie viewDidLoad obtenir appelé beaucoup plus souvent que viewDidUnload et vous pourriez avoir le problème d'obtenir la même notification plus d'une fois.

Questions connexes