我有一个 NSTableView 作为我的应用程序的一个非常核心的部分,并希望它与它的其余部分更多地集成。它只有一列(它是一个列表),我自己绘制所有单元格(正常的 NSTextFieldCells)。
第一个问题是突出显示。我自己画了高光,想去掉蓝色背景。我现在用原始背景颜色填充整个单元格以隐藏蓝色背景,但是在拖动单元格时这看起来很糟糕。我尝试覆盖highlight:withFrame:inView:
和highlightColorWithFrame:inView:
NSCell 但什么也没发生。如何禁用自动突出显示?
当我单击 NSTableView 之外的某个位置时,我还希望取消选择所有行/单元格。由于所选单元格的背景/突出显示变为灰色,因此必须有一个事件,但我找不到它。我让我的单元格双击展开,可能需要撤消此操作。所以摆脱灰色高光是不够的。
编辑:当一个单元格被双击然后resignFirstResponder
调用 NSTableView 时,我向 NSTableView 添加一个子视图。我试过这个:
- (BOOL)resignFirstResponder
{
if (![[self subviews] containsObject:[[self window] firstResponder]])
{
[self deselectAll:self];
...
}
return YES;
}
除此之外,它不起作用,我需要为视图层次结构中的所有对象实现此方法。是否有其他解决方案可以找出第一响应者何时离开某个视图层次结构?