先日のNSTextFieldを扱った件で returnキーが押された時のハンドリングにTarget/Actionが使えるのでサブクラス化は不要とのコメントをもらった。
調べると確かにその通りだった。InterfaceBuilderで Target/Actionを指定すれば returnキーが押された時に指定の Actionを呼び出すことができる。
サンプルコード:NSTextFieldStudy.zip
AppController クラスを作りログ表示するだけのアクションメソッドを1つ用意する。
AppController.h
@interface AppController : NSObject {
}
- (IBAction)call:(id)sender;
@end
InterfaceBuilderを使い、NSTextFieldの Action先へ指定しておく。
サンプルを作って試してみた。実行するとNSTextFieldが現れる。ここで文字を入力し returnキーを押すと、action指定されたメソッドが呼び出される。
デバッガコンソールの出力
[Session started at 2009-08-04 12:55:38 +0900.]
2009-08-04 12:55:43.662 NSTextFieldStudy[9103:10b] NSConcreteNotification 0x114380 {
:
:}
2009-08-04 12:55:43.668 NSTextFieldStudy[9103:10b]
サンプルでは Target/Action の他に NSControlの Delegateも試してある。Delegateを設定しておくと、そこへ - [NSControl controlTextDidEndEditing:] などのメッセージが投げられる。