我有一个 NSTableView,其中包含我的自定义 NSCell 子类 IconCell。
IconCell 包含三个元素:图像、文本和按钮。
这是我的绘图代码的简化版本(closeButton
是按钮):
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSPoint cellPoint = cellFrame.origin;
[controlView lockFocus];
CGFloat buttonWidth = [closeButton frame].size.width;
[someNSImage drawInRect:NSMakeRect(cellPoint.x, cellPoint.y, ICON_WIDTH, ICON_HEIGHT) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
[someNSString drawInRect:NSMakeRect(cellPoint.x+ICON_WIDTH+PADDING, cellPoint.y, cellFrame.size.width - ICON_WIDTH - buttonWidth, cellFrame.size.height) withAttributes:someTextAttributes];
[(NSButtonCell*)[closeButton cell] drawWithFrame:NSMakeRect(cellPoint.x + cellFrame.size.width - buttonWidth, cellPoint.y, buttonWidth, cellFrame.size.height) inView:controlView];
[controlView unlockFocus];
}
绘图部分工作正常并产生如下内容:
这就是我想要的。
此外,我希望在用户与单元格交互时发生两件事之一:如果用户单击单元格上的任何位置,除了关闭按钮,它应该这样做actionA
。如果用户点击关闭按钮,它应该这样做actionB
。
我遇到的问题是关闭按钮似乎“不可见” - 如果我点击它,它不会移动(而工作按钮应该显示其按下状态),并且通常它的行为就像它是'不存在,并被actionA
触发而不是actionB
.
这就是我设置两个动作的方式:
[tableView setAction:@selector(actionA)];
和
[closeButton setAction:@selector(actionB)];
我究竟做错了什么?