我有一个习惯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;
}
}
In MyNSTextViewSubclass
,我覆盖moveUp:
, moveDown:
, moveLeft:
, and moveRight:
方法来实现我想要的功能,并且一切正常。唯一的问题是字段编辑器的行为不再像文本字段单元格编辑器。例如,当我按 Enter 键时,它会在文本字段中插入换行符,而不是结束编辑。
如何创建一个自定义字段编辑器,其响应与默认字段编辑器的响应完全相同NSTextFieldCell
(除了我将覆盖的那四个函数)?或者有更好的方法来改变功能moveUp:
, moveDown:
, moveLeft:
, and moveRight:
?
EDIT:当选择文本字段进行编辑时,字段编辑器似乎将文本字段设置为其委托。在这种情况下,仅附加到control:textView:doCommandBySelector:
如上所述的委托方法here http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/TextEditing/Tasks/FieldEditor.html#//apple_ref/doc/uid/20001815-131200,但是当我在我的任一中实现该功能时NSTextFieldCell
子类或我的NSTableView
子类,它永远不会被调用。为什么不?