这个解决方案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 *)notification {NSLog([[notification object] text]); }
它工作正常,但是对于从键盘按下的每个键,keyPressed函数被调用3次 .
这是正常的还是我做错了什么?
张志贤
1 回答
每按一次按键,通知应该只显示一次 . 至少这是我在测试时得到的 . 我唯一能想到的是你三次打电话给
addObserver:selector:name:object:
.也许你在几个视图控制器中这样做而忘记调用
removeObserver:name:object:
?或者你在一个被多次调用的函数中调用
addObserver:selector:name:object:
?viewDidLoad
通常是放置这样的代码的好地方 .