我有一个NSCollectionView并且与NSArrayController相当不错。我的集合视图项目配置为多选,我很满意。但是,当在集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形绘图并仍在我的NSCollectionView中保留多个选择?谢谢你的帮助!
答案 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 == 0
和return NSView()
in那种情况。