1

このソリューションは iPhoneのキーボードイベントを受信します

通知センターを使用してキープレスイベントをキャプチャする方法を提供します。

[[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回呼び出されます。

これは正常ですか、それとも私は何か間違ったことをしていますか?

テオ

4

1 に答える 1

1

通知は、押されたキーごとに 1 回だけ表示されます。少なくとも、それは私がテストしたときに得られるものです。私が考えることができる唯一のことは、あなたがaddObserver:selector:name:object:3回電話をかけているということです.

おそらく、いくつかのView Controllerでそれを行っていて、呼び出すのを忘れていますremoveObserver:name:object:か?

またはaddObserver:selector:name:object:、複数回呼び出される関数を呼び出していますか? viewDidLoad通常、このようなコードを配置するのに適した場所です。

于 2010-11-23T10:18:24.753 に答える