2010-11-23 10 views
1

diese Lösung Receive iPhone keyboard eventsCapture-Tastendruckereignis mit NSNotificationCenter

bietet eine Möglichkeit, das Tastendruckereignis mit Notification Center zu erfassen.

[[NSNotificationCenter defaultCenter] addObserver: self-Selektor: @selector (keyPressed :) Name: UITextFieldTextDidChangeNotification object: nil];

[[NSNotificationCenter defaultCenter] addObserver: self Selektor: @selector (keyPressed :) Name: UITextViewTextDidChangeNotification Objekt: nil];

........

- (void) KeyPressed: (NSNotification *) Benachrichtigung { NSLog ([[Benachrichtigungsobjekt] Text]); }

Es funktioniert gut, aber für jede Taste, die von der Tastatur gedrückt wurde, wird die keyPressed-Funktion dreimal aufgerufen.

Ist das normal oder mache ich etwas falsch?

Teo

Antwort

1

Die Meldung sollte nur erscheinen einmal pro Taste gedrückt. Zumindest bekomme ich das beim Testen. Das einzige, was mir einfällt, ist, dass Sie dreimal addObserver:selector:name:object: anrufen.

Vielleicht machen Sie es in mehreren View-Controller und vergessen Sie removeObserver:name:object: anrufen?

Oder Sie rufen addObserver:selector:name:object: in einer Funktion, die mehrmals aufgerufen wird? viewDidLoad ist normalerweise ein guter Ort, um Code wie diesen zu setzen.

+0

Ich war der AddObserver von der ViewDidLoad -Funktion, aber der Controller wurde 3 Mal für 3 verschiedene Instanzen initialisiert. – teo