【问题标题】:Accepting drops of volumes on Dock icon接受 Dock 图标上的卷数
【发布时间】:2010-12-05 22:07:31
【问题描述】:

我正在编写一个 Cocoa 应用程序,该应用程序需要在其 Dock 图标上接受挂载的卷。它不是基于文档的;我打算将每个卷分派给application:openFiles 中的相应处理程序。

我已让 Dock 点亮我的应用程序的磁贴以进行拖动,但在拖放时,我的应用程序显示警告:“无法打开文档 [卷名]。 [我的应用程序] 无法打开此类文件。”我的 application:openFiles: 方法永远不会运行,即使委托已连接并已发送其他委托消息。

那么,接受将卷放到我的 Dock 磁贴上的正确方法是什么?

【问题讨论】:

    标签: cocoa macos drag-and-drop dock


    【解决方案1】:

    可能您的Info.plist 设置不正确。它应该包括这样的内容:

    CFBundleDocumentTypes =     (
        {
            LSItemContentTypes =             (
                "public.volume"
            );
        }
    );
    

    如果您需要支持 10.5 之前的版本,也可以使用 CFBundleOSTypesdisk

    我可以通过这样做让application:openFiles: 工作。

    如果您已经这样做了,那可能是 Launch Services 搞糊涂了...清理并重建您的项目,尝试使用不同的用户帐户,使用 lsregister,挥动死鸡等等。

    【讨论】:

    • 我用com.apple.mount-point 得到了它,它忽略了阻力。删除它并只留下OSType'磁盘',这就是我让瓷砖点亮的方式,但在掉落时得到警报。我会用public.volume 试试,然后告诉你会发生什么。
    • 是的——你完全正确。有关完整更新,请参阅我的答案。
    【解决方案2】:

    ...委托已连接并收到其他委托消息。

    我是这么想的。

    过失——事实上,我什至没有创建代理。我不知道为什么我认为我有。

    在 MainMenu nib 中实例化和连接代理后,加上 Nicholas Riley 建议的 Info.plist 更改,drop 现在可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2011-01-30
      • 2012-02-10
      相关资源
      最近更新 更多