Capturar el evento de prensa de claves utilizando NSNotificationCenter
-
27-09-2019 - |
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
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.