我有一个自定义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
中,我重写了moveUp:
、moveDown:
、moveLeft:
和moveRight:
方法来实现我想要的功能,并且一切正常。唯一的问题是字段编辑器不再像文本字段单元格编辑器那样运行。例如,当我按下 Enter 键时,它会在文本字段中插入换行符,而不是结束编辑。
如何创建一个自定义字段编辑器,该编辑器的响应与默认字段编辑器的响应完全相同NSTextFieldCell
(除了我将覆盖的这四个函数)?或者有没有更好的方法来改变moveUp:
、moveDown:
、moveLeft:
和的功能moveRight:
?
编辑:字段编辑器似乎在选择文本字段进行编辑时将其设置为其委托。在这种情况下,按照此处所述附加到control:textView:doCommandBySelector:
委托方法可能会有所帮助,但是当我在我的子类或我的子类中实现该函数时,它永远不会被调用。为什么不?NSTextFieldCell
NSTableView