我正在使用在NSCollectionView中显示svg图标的应用程序。我想实现拖放功能,以允许用户将svg拖到Finder或其他应用程序。我有两个问题:
1。)要实现拖动到另一个应用程序我使用NSFilenamesPboardType for registerForDraggedTypes并在collectionView中:writeItemsAtIndexes:toPasteboard:创建临时文件并将其写入[pasteboard writeObjects:@ [fileURL]];因为collectionView:namesOfPromisedFilesDroppedAtDestination:forDraggedItemsAtIndexes:在这种情况下不调用。这是正确的实施吗?我找不到如何以另一种方式为svg实现拖放。
2.。)我如何接收掉落的回调?数据源中的NSTableView具有方法tableView:draggingSession:endedAtPoint:操作,用于确定拖动结束。对于NSCollectionView,此方法未记录,但存在于NSCollectionViewDelegate中。我可以使用它,应用程序会通过审核吗?
感谢您的任何建议
答案 0 :(得分:1)
有一个可用于10.7的NSCollectionViewDelegate方法:
- collectionView:draggingSession:endedAtPoint:dragOperation:
在将项目删除到接收应用程序之后调用方法。
答案 1 :(得分:0)
collectionView:namesOfPromisedFilesDroppedAtDestination:forDraggedItemsAtIndexes:如果使用NSFilesPromisePboardType,将调用它。您可以在删除后创建文件。如果其他应用程序不接受承诺的文件,则无效。
看起来Apple忘记将新的拖放委托方法10.7添加到NSCollectionViewDelegate的文档中。你可以使用它们。