从项目内部拖动 NSCollectionView 中的选择

Drag selecting in NSCollectionView from inside of items

我在 NSCollectionView 中展示了一系列项目。 selection 和多个 selection 都已启用。

用户可以通过拖动 select 项目(即通过拖动标记项目)。然而,当用户开始从集合视图背景或项目之间的 space 拖动(而不是在项目上)时,这会起作用,但我希望在项目上开始拖动时也能做到这一点。

如果我们将文字和图片视为一个项目,我想要像这张照片这样的东西。

图片来源:http://osxdaily.com/2013/09/16/select-multiple-files-mac-os-x/

提前致谢。

在项目视图的 class 中实施 hitTest(_:) 以使项目 "see through" 获得点击。 Return 当用户在项目视图中单击时,集合视图而不是项目视图。

override func hitTest(_ point: NSPoint) -> NSView? {
    var view = super.hitTest(point)
    if view == self {
        repeat {
            view = view!.superview
        } while view != nil && !(view is NSCollectionView)
    }
    return view;
}