例如当我点击下面的红点时:
我希望发生以下取消选择:
我使用数据源和选择索引的绑定设置了基于视图的 NSOutlineView。到目前为止,我已经尝试覆盖 TableCellView becomeFirstResponder 并覆盖 NSOutlineView 的 becomeFirstResponder 但似乎 NSOutlineView 从未真正放弃第一响应者状态?
一些建议将不胜感激!
例如当我点击下面的红点时:
我希望发生以下取消选择:
我使用数据源和选择索引的绑定设置了基于视图的 NSOutlineView。到目前为止,我已经尝试覆盖 TableCellView becomeFirstResponder 并覆盖 NSOutlineView 的 becomeFirstResponder 但似乎 NSOutlineView 从未真正放弃第一响应者状态?
一些建议将不胜感激!
我在这个话题上找到了这篇文章。解决方案似乎是创建一个子类NSOutlineView
并覆盖mouseDown:
,以便您可以确定点击是否在一行上。当点击在一行上时,您只需发送给 super。如果不是你发送deselectAll:
到你的NSOutlineView
.
我自己没有尝试过,但是有很多帖子都提供了类似的代码。
的使用setAction:
方法NSOutlineView
。
[mOutlineView setAction:@selector(doClick:)];
[mOutlineView setTarget:self];
-(IBAction) doClick:(id)sender;
{
if ([mOutlineView clickedRow] == -1) {
[mOutlineView deselectAll:nil];
}
}
斯威夫特 5. 在 NSOutlineViewDelegate
func outlineViewSelectionDidChange(_ notification: Notification) {
//1
guard let outlineView = notification.object as? NSOutlineView else {
return
}
outlineView.deselectAll(nil)
}