いくつかのカスタムNSTableView
サブクラスで満たされたカスタム サブクラスがありNSTextFieldCell
ます。矢印キーを使用して編集したセルを変更できるようにしたいと考えています。
カスタム フィールド エディターを作成し (サブクラス化NSTextView
して)、次のようにウィンドウ デリゲートから返すことで、これを実現できます。
- (id) windowWillReturnFieldEditor:(NSWindow *) aWindow toObject:(id) anObject {
if ([anObject isEqual:myCustomTable]) {
if (!myCustomFieldEditor) {
myCustomFieldEditor = [[MyNSTextViewSubclass alloc] init];
[myCustomFieldEditor setTable:anObject];
}
return myCustomFieldEditor;
}
else {
return nil;
}
}
では、、、、およびメソッドをオーバーライドして目的の機能を実装しましたが、すべて正常に動作しますMyNSTextViewSubclass
。唯一の問題は、フィールド エディターがテキスト フィールド セル エディターのように動作しなくなったことです。たとえば、Enter キーを押すと、編集を終了する代わりにテキスト フィールドに改行が挿入されます。moveUp:
moveDown:
moveLeft:
moveRight:
デフォルトのものとまったく同じように応答するカスタム フィールド エディターを作成するにはどうすればよいですかNSTextFieldCell
(オーバーライドする 4 つの関数を除く)。moveUp:
または、 、moveDown:
、moveLeft:
、およびの機能を変更するより良い方法はありmoveRight:
ますか?
編集:テキスト フィールドが編集用に選択されると、フィールド エディターがテキスト フィールドをデリゲートとして設定するようです。その場合、ここcontrol:textView:doCommandBySelector:
で説明されているようにデリゲート メソッドにアタッチするだけで役立つ場合がありますが、サブクラスまたはサブクラスでその関数を実装すると、呼び出されません。なぜだめですか?NSTextFieldCell
NSTableView