0

我有一个NSCollectionView运行良好的NSArrayController. 我的收藏视图项目被配置为多选,我对此很满意。但是,当集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形绘图并仍保留多个选择NSCollectionView?谢谢你的帮助!

4

2 回答 2

2

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

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

简单的答案是,您无法更改选择外观,除非通过修改NSCollectionView.

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

于 2012-03-17T01:53:05.567 回答
0

使用最新NSCollectionView 版本(我认为是 2015 年发布的?),它要求viewForSupplementaryElementOfKind委托获取用于绘制选择矩形的视图。

您可以通过与委托中的比较kind.rawValue来“捕捉”这种情况,如果您不希望它绘制."NSCollectionElementKindSelectionRectIndicator"return NSView()

如果您确实想绘制它,请collectionView.makeSupplementaryView(ofKind:使用使用 rawValue 手动制作的种类/标识符返回"NSCollectionElementKindSelectionRectIndicator"。我相信自 2015 年以来枚举中就缺少这些种类/标识符,并且每次我实现 NSCollectionView 时都会让我感到悲伤。

编辑:我在 Apple Developer Forums 上查找了一篇关于此问题的旧帖子,并提到我必须防范numberOfSections == 0,return NSView()在这种情况下。

于 2017-09-18T00:30:08.243 回答