Захват события нажатия клавиши с помощью NSNotificationCenter - PullRequest
1 голос
/ 23 ноября 2010

это решение Получение событий клавиатуры iPhone

предлагает способ захвата события нажатия клавиши с помощью центра уведомлений.

[[NSNotificationCenter defaultCenter] addObserver: self selector: @имя селектора (keyPressed :): UITextFieldTextDidChangeNotification object: nil];

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (keyPressed :) name: UITextViewTextDidChangeNotification object: nil] 100 * * 100 *.......

- (void) keyPressed: (NSNotification *) уведомление {NSLog ([[объект уведомления] текст]);}

Работает нормально, но для каждой клавиши, нажатой с клавиатуры, функция keyPressed вызывается 3 раза.

Это нормально или я что-то не так делаю?

Teo

1 Ответ

1 голос
/ 23 ноября 2010

Уведомление должно появляться только один раз при нажатии клавиши. По крайней мере, это то, что я получаю при тестировании. Единственное, о чем я могу думать, это то, что вы звоните addObserver:selector:name:object: три раза.

Возможно, вы делаете это в нескольких контроллерах представления и забыли позвонить removeObserver:name:object:?

Или вы вызываете addObserver:selector:name:object: в функции, которая вызывается несколько раз? viewDidLoad обычно хорошее место для размещения кода, подобного этому.

...