使用NSNotificationCenter捕获按键事件

时间:2010-11-23 09:26:49

标签: iphone keyboard keypress nsnotificationcenter

这个解决方案 Receive iPhone keyboard events

提供了一种使用通知中心捕获按键事件的方法。

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

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

........

- (void)keyPressed:(NSNotification *)通知 {   NSLog([[通知对象]文本]); }

它工作正常,但对于从键盘按下的每个键,keyPressed函数被调用3次。

这是正常还是我做错了什么?

张志贤

1 个答案:

答案 0 :(得分:1)

每按一次按键,通知应该只显示一次。至少这是我在测试时得到的。我唯一能想到的就是你打电话addObserver:selector:name:object:三次。

也许您在多个视图控制器中执行此操作并忘记调用removeObserver:name:object:

或者您在多次调用的函数中调用addObserver:selector:name:object:viewDidLoad通常是放置此类代码的好地方。