如何在NSCollectionView中禁用选择矩形绘图?

时间:2012-01-05 19:33:28

标签: macos cocoa nscollectionview

我有一个NSCollectionView并且与NSArrayController相当不错。我的集合视图项目配置为多选,我很满意。但是,当在集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形绘图并仍在我的NSCollectionView中保留多个选择?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

NSCollectionView是一个相当不透明的类,没有太多方法可以轻松修改其基本行为。

拖动操作似乎由私有方法_performDragFromMouseDown:处理,而不是覆盖mouseDragged:。我不确定私有方法究竟是什么。

简单的答案是,除非修改NSCollectionView的私有方法,否则无法更改选择外观。

如果必须修改此行为,则可能需要使用自定义视图而不是NSCollectionView

答案 1 :(得分:0)

使用最新的NSCollectionView (我认为2015年发布?),它会在委托上调用viewForSupplementaryElementOfKind来获取绘制选择矩形的视图。

您可以通过将代理中的kind.rawValue"NSCollectionElementKindSelectionRectIndicator"进行比较来“抓住”这种情况,如果您不希望它绘制<{strong>,则return NSView()

如果您执行想要绘制它,请使用collectionView.makeSupplementaryView(ofKind:的rawValue手动制作的种类/标识符返回"NSCollectionElementKindSelectionRectIndicator"。自2015年以来,我认为这些类型/标识符已从枚举中丢失,并且每次实现NSCollectionView时都会让我感到悲伤。

编辑:我在Apple开发者论坛上查了一篇关于此帖的老帖子,我提到我必须防范numberOfSections == 0return NSView() in那种情况。