ページ

2009年8月4日火曜日

NSTextField でリターンキーが押されたときの処理の記述は Target/Action と Delegateが使える

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

先日の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:] などのメッセージが投げられる。