首页 文章

使用NSNotificationCenter捕获按键事件

提问于
浏览
1

这个解决方案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 回答

  • 1

    每按一次按键,通知应该只显示一次 . 至少这是我在测试时得到的 . 我唯一能想到的是你三次打电话给 addObserver:selector:name:object: .

    也许你在几个视图控制器中这样做而忘记调用 removeObserver:name:object:

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

相关问题