当用户右键单击时,如何禁用NSTableView
行周围的对焦环?我不能让它消失。将表格中个人NSTableViewCell
的焦点圈设置为None
无效。
答案 0 :(得分:2)
新强>
我是这样做的。
您可以手动处理菜单。子类NSTableRowView
或NSTableCellView
,然后使用rightMouseDown:
和mouseDown:
(检查控制键),然后通知您的tableViewController(通知或委托)点击。不要忘记传递该事件,然后您可以在没有聚焦环的情况下在表视图上显示带有事件的菜单。
上述答案更容易,但正如作者所提到的那样,它可能无法通过审查。
另外,您可以显示每行的单个菜单项(如果您有不同种类的视图)
<强>旧强>
我认为焦点环由NSTableRowView
定义,而不是NSTableCellView
,因为它负责完整的行。尝试更改那里的聚焦环。您可以继承NSTableRowView
并通过IB或NSTableViewDelegate
方法将其添加到tableView:
- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
答案 1 :(得分:1)
对表视图进行子类化并实现以下方法:
- (void)drawContextMenuHighlightForRow:(NSInteger)row {
// do nothing
}
注意:
答案 2 :(得分:0)
如果你的目标只是显示一个上下文菜单,你也可以试试这个。
NSOutlineView
换成另一个NSView
。 menuForEvent
方法。 menu
。 现在包装器视图显示菜单而不是轮廓视图,因此它不会显示聚焦环。有关如何在菜单事件中查找节点,请参阅How do you add context senstive menu to NSOutlineView (ie right click menu)。