我在基于单元格的 NSTableView 的列中有一个 NSTextFieldCell。这个单元格应该处理点击。当没有按下修饰键时,这可以正常工作。如果我按住 shift 或 command 键,表格视图会吞下 mouseDown 事件以尝试处理行选择。
有没有办法完全禁用 NSTableView 中的行选择?
有没有办法让 NSTableView 通过所有事件?
我的单元格子类派生自 TableViewLinks 示例代码中的 LinkTextFieldCell。它实现:
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)flag
由于我不想要行选择,我的表视图委托实现:
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex
{
return NO;
}
- (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return YES;
}
我的委托方法是从 -[NSTableView mouseDown:] 调用的。当没有按下修饰键时调用鼠标跟踪代码。
有没有比继承 NSTableView 来覆盖 -[NSTableView mouseDown:] 更好的方法来解决这个问题?