2010-11-23 20 views
1

cette solution Receive iPhone keyboard eventsévénement Capture appuyer sur la touche à l'aide NSNotificationCenter

offre un moyen de capturer l'événement keypress à l'aide du centre de notification.

[[NSNotificationCenter defaultCenter] addObserver: auto-sélecteur: @selector (keyPressed :) nom: UITextFieldTextDidChangeNotification objet: nil];

[[NSNotificationCenter defaultCenter] serveur addObserver: auto-sélecteur: @selector (keyPressed :) nom: UITextViewTextDidChangeNotification objet: nil];

........

- (void) keyPressed: (NSNotification *) notification { ([texte objet de notification []]) NSLog; }

Cela fonctionne bien, mais pour chaque touche que l'on appuie sur le clavier, la fonction keyPressed est appelée 3 fois.

Est-ce normal ou est-ce que je fais quelque chose de mal?

Teo

Répondre

1

La notification ne doit apparaître qu'une seule fois par touche enfoncée. Au moins, c'est ce que j'ai en test. La seule chose que je peux penser est que vous appelez addObserver:selector:name:object: trois fois.

Peut-être que vous le faites dans plusieurs contrôleurs de vue et oubliez d'appeler removeObserver:name:object:? Ou vous appelez addObserver:selector:name:object: dans une fonction qui est appelée plusieurs fois? viewDidLoad est normalement un bon endroit pour mettre du code comme ça.

+0

J'étais l'addObserver de la fonction viewDidLoad mais le contrôleur a été initialisé 3 fois pour 3 instances différentes. – teo