【发布时间】:2012-03-18 23:23:17
【问题描述】:
我有一个NSCollectionView,它显示了一些文件:
我想要的是……
- 能够选择一个文件。
- 能够将此文件拖放到桌面或其他 Finder 窗口中。
文件图标由 NSImageView 显示。
提供此类功能的好方法是什么?
非常感谢!
【问题讨论】:
标签: objective-c cocoa drag-and-drop nscollectionview
我有一个NSCollectionView,它显示了一些文件:
我想要的是……
文件图标由 NSImageView 显示。
提供此类功能的好方法是什么?
非常感谢!
【问题讨论】:
标签: objective-c cocoa drag-and-drop nscollectionview
您需要在集合视图上调用declareTypes:owner: 并传入您希望能够拖动的粘贴板类型。在你的情况下,你想要NSURLPboardType。
那么您需要做的就是在您的NSCollectionView 的delegate 中实现三个与拖动相关的委托方法。
你应该从这个方法返回YES:
collectionView:canDragItemsAtIndexes:withEvent:
您可以使用此方法为每个项目返回自定义拖动图像:
collectionView:draggingImageForItemsAtIndexes:withEvent:offset:
然后您使用此方法将项目写入粘贴板:
collectionView:writeItemsAtIndexes:toPasteboard:
在您的情况下,您将在此方法的实现中将拖动项目的 URL 写入粘贴板。
如果您不了解如何使用粘贴板,您应该阅读指南Drag and Drop Programming Topics。
【讨论】: