1

此解决方案 接收 iPhone 键盘事件

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

[[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*) notification
{
  NSLog([[notification object]text]);
}

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

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

4

1 回答 1

1

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

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

或者你正在调用addObserver:selector:name:object:一个被多次调用的函数?viewDidLoad通常是放置这样的代码的好地方。

于 2010-11-23T10:18:24.753 回答