我有一个NSCollectionView
运行良好的NSArrayController
. 我的收藏视图项目被配置为多选,我对此很满意。但是,当集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形绘图并仍保留多个选择NSCollectionView
?谢谢你的帮助!
2 回答
NSCollectionView
是一个相当不透明的类,没有太多方法可以轻松修改其基本行为。
拖动操作似乎由私有方法处理,_performDragFromMouseDown:
而不是通过覆盖来处理mouseDragged:
。我不确定私有方法到底是什么。
简单的答案是,您无法更改选择外观,除非通过修改NSCollectionView
.
您可能需要使用自定义视图,而不是NSCollectionView
必须修改此行为。
使用最新NSCollectionView
版本(我认为是 2015 年发布的?),它要求viewForSupplementaryElementOfKind
委托获取用于绘制选择矩形的视图。
您可以通过与委托中的比较kind.rawValue
来“捕捉”这种情况,如果您不希望它绘制."NSCollectionElementKindSelectionRectIndicator"
return NSView()
如果您确实想绘制它,请collectionView.makeSupplementaryView(ofKind:
使用使用 rawValue 手动制作的种类/标识符返回"NSCollectionElementKindSelectionRectIndicator"
。我相信自 2015 年以来枚举中就缺少这些种类/标识符,并且每次我实现 NSCollectionView 时都会让我感到悲伤。
编辑:我在 Apple Developer Forums 上查找了一篇关于此问题的旧帖子,并提到我必须防范numberOfSections == 0
,return NSView()
在这种情况下。