从Cocoa App拖放到Finder

时间:2012-03-18 23:23:18

标签: objective-c cocoa drag-and-drop nscollectionview

我有NSCollectionView,显示一些文件: enter image description here

我想要的是......

  1. 能够选择一个文件。
  2. 能够拖动此文件并将其放在桌面或其他Finder窗口上。
  3. 文件图标由NSImageView显示。

    提供此类功能的好方法是什么?

    非常感谢!

1 个答案:

答案 0 :(得分:2)

您需要在集合视图上调用declareTypes:owner:并传入您希望能够拖动的粘贴板类型。在您的情况下,您需要NSURLPboardType

您需要做的就是在NSCollectionView的{​​{3}}中实现三个与拖动相关的委托方法。

您应该从此方法返回YES

delegate

您可以使用此方法为每个项目返回自定义拖动图像:

collectionView:canDragItemsAtIndexes:withEvent:

然后使用此方法将项目写入粘贴板:

collectionView:draggingImageForItemsAtIndexes:withEvent:offset:

在您的情况下,您可以在此方法的实现中将拖动项目的URL写入粘贴板。

如果您不了解如何使用粘贴板,则应阅读指南collectionView:writeItemsAtIndexes:toPasteboard: