objective-c – NSTableView中NSTextFieldCell的自定义字段编辑器

objective-c – NSTableView中NSTextFieldCell的自定义字段编辑器,第1张

概述我有一个自定义的NSTableView子类填充了几个自定义NSTextFieldCell子类.我希望能够使用箭头键更改编辑的单元格. 我能够通过创建自定义字段编辑器(通过子类化NSTextView)并从窗口委托中返回它来完成此 *** 作,如下所示: - (id) windowWillReturnFieldEditor:(NSWindow *) aWindow toObject:(id) anObject 我有一个自定义的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:,moveleft:和moveRight的功能:?

编辑:当选择进行编辑时,字段编辑器似乎将文本字段设置为其委托.在这种情况下,附加到控件可能会有所帮助:textVIEw:doCommandBySelector:委托方法,如here所述,但是当我在我的NSTextFIEldCell子类或我的NStableVIEw子类中实现该函数时,它永远不会被调用.为什么不?

解决方法 我几乎整天都在研究这个问题,但我终于明白了.为了能够使用箭头键遍历我的NStableVIEw子类,我必须将以下方法添加到我的NStableVIEw:

- (BOol)textVIEw:(NSTextVIEw *)aTextVIEw doCommandBySelector:(SEL)aSelector {    if(aSelector == @selector(moveUp:)) {        [self moveSelectiontoprevIoUsRow];        return YES;    } else if(aSelector == @selector(moveDown:)) {        [self moveSelectionToNextRow];        return YES;    } else if(aSelector == @selector(moveleft:)) {        [self moveSelectiontoprevIoUsColumn];        return YES;    } else if(aSelector == @selector(moveRight:)) {        [self moveSelectionToNextColumn];        return YES;    }    return NO;}

这是因为默认字段编辑器是NSTextVIEw(不是NSControl)所以我需要使用< NSTextVIEwDelegate>协议.设置为其委托的视图是NStableVIEw,而不是NSTextFIEldCell. moveSelectionTo …函数是我的NStableVIEw子类中定义的自定义函数,它跟踪当前编辑的单元格,然后相应地移动它.

总结

以上是内存溢出为你收集整理的objective-c – NSTableView中NSTextFieldCell的自定义字段编辑器全部内容,希望文章能够帮你解决objective-c – NSTableView中NSTextFieldCell的自定义字段编辑器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存