将文件拖放到Cocoa中的Dock图标上

Tri*_*ert 14 cocoa drag-and-drop file dock

如何将Info.plist中指定类型的文件(或选择在Finder中打开)放到我的停靠栏图标上,然后使用文件的完整路径调用方法?

Jos*_*man 17

如果您正确设置了Info.plist的CFBundleDocumentTypes数组('LSItemContentTypes'或'CFBundleTypeExtensions'),那么您只需要设置NSApplication委托并实现委托方法application:openFile : .

如果您希望一次删除多个文件,请实现application:openFiles : .

对于承诺文件(NSFilesPromisePboardType/ kPasteboardTypeFileURLPromise),请参阅将承诺文件删除到Dock中的应用程序图标.

  • 我已经正确设置了CFBundleDocumentTypes数组,并编写了该方法,但是停靠图标将根本不接受我的文件。 (2认同)
  • 无论我做什么,我都无法让停靠栏图标接受放置。 (2认同)

Dav*_*las 10

这是Xcode 5的更新解决方案.在AppDelegate.m中

-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
{
    NSLog(@"%@", filename);
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

在项目>目标>信息下的Xcode设置文档类型中: 项目>信息>文档类型

检查Info.plist中的设置,以防您有一个空的"文档内容类型UTI"数组,该数组应正确填写或删除. 从Info.plist中删除空文档内容类型UTIs数组

您的Info.plist应如下所示: 文档类型Info.plist


Mar*_*age 8

在当前系统上,您可以使用UTI而不是旧式四字符类型(fold如上所述).在Xcode的文档类型编辑器中,使用以下命令创建一个新类型:

  • 名称:文件夹
  • 标识符:public.folder

public.folder是一个子类型public.directory.public.folder匹配对用户显示的目录,即不包装.app包装.