在我的可可应用程序中,我需要一个用于 NSTableView 的自定义 NSCell。这个NSCell 子类包含一个用于处理单击的自定义 NSButtonCell(以及两个或三个用于文本内容的 NSTextFieldCell)。您将在下面找到我的代码的简化示例。
@implementation TheCustomCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
// various NSTextFieldCells
NSTextFieldCell *titleCell = [[NSTextFieldCell alloc] init];
....
// my custom NSButtonCell
MyButtonCell *warningCell = [[MyButtonCell alloc] init];
[warningCell setTarget:self];
[warningCell setAction:@selector(testButton:)];
[warningCell drawWithFrame:buttonRect inView:controlView];
}
我遇到的问题是:让这个 NSCell 中的 Button(更准确地说:NSButtonCell)正常工作的最佳/正确方法是什么?“工作”是指:触发指定的操作消息并在单击时显示备用图像。开箱即用,单击时按钮不执行任何操作。
很难找到有关此主题的信息/阅读材料。我在网上找到的唯一帖子指向我实施
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp;
这是正确的方法吗???实现 trackMouse: 在我包含的 NSCell 中?然后将事件转发到 NSButtonCell?我本来希望 NSButtonCell 本身知道当它被点击时要做什么(我看到 trackMouse: 方法更多地与真正跟踪鼠标移动相结合——而不是作为“标准”点击行为的训练轮)。但是,当包含在单元格本身中时,它似乎并没有这样做……看来我还没有掌握自定义单元格的大局;-)
如果有人能根据他自己的经验回答这个问题(或向我指出一些教程等),我会很高兴 - 并告诉我我是否走在正确的轨道上。
在此先感谢,托比