Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在NSCollectionView中禁用选择矩形图形?_Macos_Cocoa_Nscollectionview - Fatal编程技术网

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

Macos 如何在NSCollectionView中禁用选择矩形图形?,macos,cocoa,nscollectionview,Macos,Cocoa,Nscollectionview,我有一个nsCollection视图,使用NSArrayController运行得相当好。我的收藏视图项被配置为多选项,我对此很满意。但是,当集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形图形并在我的NSCollectionView中保留多个选择?谢谢你的帮助 NSCollectionView是一个相当不透明的类,没有太多方法可以轻松修改其基本行为 拖动操作似乎由私有方法\u performdragfromousedown:处理,而不是重写mouseDragged:。我不确

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

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

拖动操作似乎由私有方法
\u performdragfromousedown:
处理,而不是重写
mouseDragged:
。我不确定私有方法到底做什么

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


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

使用最新的
NSCollectionView
(我想是2015年发布的吧?),它会调用代理上的
ViewforSupplementalElementofKind
,以获取绘制选择矩形的视图

您可以通过将
kind.rawValue
与委托中的
“NSCollectionElementKindSelectionRectIndicator”
进行比较来“捕捉”这种情况,如果您不想绘制它,则
返回NSView()

如果确实要绘制它,请返回
collectionView.makeSupplementaryView(of kind:
,使用使用
“NSCollectionElementKindSelectionRectIndicator”的原始值手动创建的种类/标识符
。我相信,自2015年以来,这些种类/标识符就从枚举中消失了,每次我实现NSCollectionView时,都会让我感到悲伤


编辑:我在苹果开发者论坛上查找了一篇关于这一点的老帖子,我提到我必须防止
numberOfSections==0
,以及
返回NSView()
在这种情况下。

我再次尝试解决这个问题。我覆盖了mouseDragged:在我的NSCollectionView子类和CollectionViewItem子类中。我添加了断点,并发现在鼠标拖动过程中都不会调用。我必须查看幕后使用了哪些其他视图。所以您只需要lti select是否像现在一样工作,但不显示任何矩形?我希望允许点击和shift |命令单击选择工作,而不在拖动时绘制选择矩形。覆盖鼠标标记:没有帮助。例如,苹果的Mail.app中就有这种行为,用于其邮件主题集合视图。感谢您的帮助他回答说,我曾试图压倒穆塞德拉格:但没有成功。