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