这个解决方案 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次。
这是正常还是我做错了什么?
张志贤
答案 0 :(得分:1)
每按一次按键,通知应该只显示一次。至少这是我在测试时得到的。我唯一能想到的就是你打电话addObserver:selector:name:object:
三次。
也许您在多个视图控制器中执行此操作并忘记调用removeObserver:name:object:
?
或者您在多次调用的函数中调用addObserver:selector:name:object:
? viewDidLoad
通常是放置此类代码的好地方。