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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top