【问题标题】:Drag and drop from Cocoa App to Finder从 Cocoa App 拖放到 Finder
【发布时间】:2012-03-18 23:23:17
【问题描述】:

我有一个NSCollectionView,它显示了一些文件:

我想要的是……

  1. 能够选择一个文件。
  2. 能够将此文件拖放到桌面或其他 Finder 窗口中。

文件图标由 NSImageView 显示。

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

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

    那么您需要做的就是在您的NSCollectionViewdelegate 中实现三个与拖动相关的委托方法。

    你应该从这个方法返回YES

    collectionView:canDragItemsAtIndexes:withEvent:

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

    collectionView:draggingImageForItemsAtIndexes:withEvent:offset:

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

    collectionView:writeItemsAtIndexes:toPasteboard:

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

    如果您不了解如何使用粘贴板,您应该阅读指南Drag and Drop Programming Topics

    【讨论】:

    • 嘿,我还不能尝试,但这听起来很有希望。谢谢!你总是给出非常有帮助和好的答案!
    • 并且,如果您使用 NSCollectionView 或其他视图,请不要忘记在 awakeFromNib 或其他 init 方法中的某处调用 [collectionView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO]。
    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2012-05-05
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多