3

例如当我点击下面的红点时:

前

我希望发生以下取消选择:

在此处输入图像描述

我使用数据源和选择索引的绑定设置了基于视图的 NSOutlineView。到目前为止,我已经尝试覆盖 TableCellView becomeFirstResponder 并覆盖 NSOutlineView 的 becomeFirstResponder 但似乎 NSOutlineView 从未真正放弃第一响应者状态?

一些建议将不胜感激!

4

3 回答 3

4

我在这个话题上找到了这篇文章。解决方案似乎是创建一个子类NSOutlineView并覆盖mouseDown:,以便您可以确定点击是否在一行上。当点击在一行上时,您只需发送给 super。如果不是你发送deselectAll:到你的NSOutlineView.

我自己没有尝试过,但是有很多帖子都提供了类似的代码。

于 2012-07-15T17:07:33.837 回答
1

的使用setAction:方法NSOutlineView

[mOutlineView setAction:@selector(doClick:)];
[mOutlineView setTarget:self];

-(IBAction) doClick:(id)sender;
{
    if ([mOutlineView clickedRow] == -1) {
        [mOutlineView deselectAll:nil];
    }
}
于 2014-04-28T09:42:10.567 回答
0

斯威夫特 5. 在 NSOutlineViewDelegate

    func outlineViewSelectionDidChange(_ notification: Notification) {
        //1
        guard let outlineView = notification.object as? NSOutlineView else {
            return
        }
        outlineView.deselectAll(nil)
}
于 2020-10-06T09:58:08.713 回答