Cattura evento premere il tasto utilizzando NSNotificationCenter
-
27-09-2019 - |
Domanda
questa soluzione Ricevere gli eventi della tastiera iPhone
offre un modo per catturare l'evento Pressione con centro di notifica.
[[NSNotificationCenter defaultCenter] addObserver: auto selettore: @selector (keyPressed :) nome: UITextFieldTextDidChangeNotification oggetto: nil];
[[NSNotificationCenter defaultCenter] addObserver: auto selettore: @selector (keyPressed :) nome: UITextViewTextDidChangeNotification oggetto: nil];
........
- (void) keyPressed: (NSNotification *) notifica { NSLog ([[oggetto di notifica] text]); }
E 'funziona bene, ma per ogni chiave che è stato premuto da tastiera la funzione keyPressed viene chiamata 3 volte.
È normale o sto facendo qualcosa di sbagliato?
Teo
Soluzione
La notifica deve apparire solo una volta per ogni tasto premuto. Almeno questo è quello che mi capita durante il test. L'unica cosa che posso pensare è che si sta chiamando addObserver:selector:name:object:
tre volte.
Forse si sta facendo in diversi controller di vista e dimenticare di chiamare removeObserver:name:object:
?
In alternativa si sta chiamando addObserver:selector:name:object:
in una funzione che viene chiamato più volte? viewDidLoad
è normalmente un buon posto per mettere il codice come questo.