Capturez événement de presse touche à l'aide NSNotificationCenter
-
27-09-2019 - |
Question
cette solution Recevoir les événements du clavier iPhone
offre un moyen de capturer l'événement keypress en utilisant le centre de notification.
[[NSNotificationCenter defaultCenter] addObserver: self sélecteur: @selector (keyPressed :) nom: UITextFieldTextDidChangeNotification objet: nil];
[[NSNotificationCenter defaultCenter] addObserver: self sélecteur: @selector (keyPressed :) nom: UITextViewTextDidChangeNotification objet: nil];
........
- (void) keyPressed: (NSNotification *) notification { NSLog ([[objet de notification] texte]); }
Il fonctionne bien, mais pour chaque clé qui est été pressée à partir du clavier de la fonction keyPressed est appelé 3 fois.
Est-ce normal ou que je fais quelque chose de mal?
Teo
La solution
La notification ne doit apparaître une fois par appui sur une touche. Au moins c'est ce que je reçois lors du 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 oublier d'appeler removeObserver:name:object:
?
Ou vous appelez addObserver:selector:name:object:
dans une fonction qui est appelée à plusieurs reprises? viewDidLoad
est normalement un bon endroit pour mettre le code comme celui-ci.