NSCollectionView`validdrop`委托没有被调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSCollectionView`validdrop`委托没有被调用相关的知识,希望对你有一定的参考价值。

我有一个简单的1节NSCollectionView并且变得疯狂,没有得到拖放工作。集合视图具有自定义集合视图项,其标签显示自定义对象的数据。一切都有效,直到拖动的项目应该在新位置之间掉落。但是当我拖动项目时,放置目的地没有掉落指示符(通常是间隙)。我发现下面的NSCollectionView代表没有被调用。

func collectionView(_ collectionView: NSCollectionView, validateDrop draggingInfo: NSDraggingInfo,
                   proposedIndexPath proposedDropIndexPath: AutoreleasingUnsafeMutablePointer<NSIndexPath>,
                   dropOperation proposedDropOperation: UnsafeMutablePointer<NSCollectionViewDropOperation>) -> NSDragOperation {

    print("validateDrop", proposedDropIndexPath) // never shows up in the console

    if proposedDropOperation.pointee == NSCollectionViewDropOperation.on {
        proposedDropOperation.pointee = NSCollectionViewDropOperation.before
    }
        print("validateDrop", proposedDropIndexPath)
        return NSDragOperation.move
    }

我有什么想念???谢谢!

编辑1

我只想使用拖放来允许重新排序集合视图中的项目。它不打算在集合视图中拖动外部内容。

答案

您是否为拖动类型注册了集合视图?

  collectionView.registerForDraggedTypes([NSPasteboard.PasteboardType])

以上是关于NSCollectionView`validdrop`委托没有被调用的主要内容,如果未能解决你的问题,请参考以下文章

NSCollectionView 斯威夫特

带有网络图像的 NSCollectionView

GCD 块不更新 NSCollectionView

NSCollectionView+NSScrollView 中的鼠标悬停

NSCollectionView 中的居中项目

NSCollectionView 是不是与 CoreData 兼容