Iphone 使用NSNotificationCenter捕获按键事件

Iphone 使用NSNotificationCenter捕获按键事件,iphone,keyboard,keypress,nsnotificationcenter,Iphone,Keyboard,Keypress,Nsnotificationcenter,这个解决方案 提供了一种使用通知中心捕获按键事件的方法 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selecto

这个解决方案

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

[[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次

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


Teo

每按一次键,通知只应出现一次。至少这是我测试时得到的。我能想到的唯一一件事是,您调用了三次
addObserver:selector:name:object:

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


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

每按一次键,通知只应出现一次。至少这是我测试时得到的。我能想到的唯一一件事是,您调用了三次
addObserver:selector:name:object:

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


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

我是viewDidLoad函数中的addObserver,但控制器针对3个不同的实例初始化了3次。我是viewDidLoad函数中的addObserver,但控制器针对3个不同的实例初始化了3次。