【问题标题】:Is it possible for an NSView to request all drag types?NSView 是否可以请求所有拖动类型?
【发布时间】:2013-12-31 00:28:31
【问题描述】:

Apple 的剪贴板查看器应用在实现复制和粘贴时非常有用。我想要一个类似的拖放功能,但我不知道如何开始。

通常,实现放置目标的第一步是让您的 NSView 调用 -registerForDraggedTypes。有什么方法可以声明您希望收到所有种可能的掉落物?或者是否有一个较低级别的 API 可以用来获取粘贴板而无需先专门注册?

【问题讨论】:

    标签: macos cocoa drag-and-drop nsview


    【解决方案1】:

    我不是 100% 确定它在所有情况下都有效,但我已经成功地使用了类似的东西:

    [self registerForDraggedTypes: @[(NSString*)kUTTypeItem]];
    

    同时查找其他类型的项目。

    【讨论】:

    • 我认为你在正确的轨道上。这几乎适用于所有事情,并且可能与我们能做的一样好。例如,从 Font Book 拖动字体不会触发它,但我也找不到任何其他接受字体的应用程序,所以我怀疑它是“dyn”。第三方应用程序也无法依赖的 UTI。
    • 为了完整起见,最好包含所有 8 个“UTI 抽象类型”和 9 个“UTI 具体类型”(“大多数其他类型标识符派生自”——实际上只有 7 个这 17 个是根 UTI,似乎没有任何方法可以获得“所有根 UTI”),但实际上我还没有找到任何东西(除了可能是“dyn.”类型的东西)那是 不与 kUTTypeItem 匹配。
    • “粘贴板标识符”是什么意思?
    • 啊,对不起,忽略粘贴板标识符垃圾。这是复制的代码,除了 kUTTypeItem 之外,我还注册了一个自己的 UTI,并且不关心它为什么存在(只是让它更通用)。
    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2017-11-23
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多