Pregunta

esta solución Recibe eventos de teclado iPhone

ofrece una manera de capturar el evento de pulsación de tecla usando centro de notificaciones.

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (keyPressed :) nombre: UITextFieldTextDidChangeNotification objeto: nil];

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (keyPressed :) nombre: UITextViewTextDidChangeNotification objeto: nil];

........

- (void) keyPressed: (NSNotification *) notificación {   NSLog ([[objeto de notificación] texto]); }

Funciona bien, pero para cada clave que se ha pulsado en el teclado la función keyPressed se llama 3 veces.

¿Es esto normal o estoy haciendo algo mal?

Teo

¿Fue útil?

Solución

La notificación sólo debe aparecer una vez por cada tecla pulsada. Al menos eso es lo que me pasa cuando se prueba. Lo único que ocurre es que está llamando addObserver:selector:name:object: tres veces.

Tal vez lo está haciendo en varios controladores de vista y se olvide de removeObserver:name:object: llamada?

O están llamando addObserver:selector:name:object: en una función que es llamada varias veces? viewDidLoad es normalmente un lugar bueno para poner un código como éste.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top