Cocoa:拖放任何文件类型

Posted

技术标签:

【中文标题】Cocoa:拖放任何文件类型【英文标题】:Cocoa: Drag and Drop any file type 【发布时间】:2011-05-20 09:19:30 【问题描述】:

我正在尝试创建一个拖放区域,该区域接受任何文件类型并将其上传到服务器(使用 ASIHTTPRequest)。我查看了 Apple 提供的以下示例:

http://developer.apple.com/library/mac/#samplecode/CocoaDragAndDrop/Introduction/Intro.html

但它只涉及处理图像的拖放。如何设置拖放操作以处理任何文件类型?

谢谢。

【问题讨论】:

【参考方案1】:

有点相关,但添加这个以防对某人有帮助:

如果您只是想处理拖到应用程序图标上的任何文件(不需要是基于文档的应用程序):

在.h中:

- (void)application:(NSApplication *)sender openFiles:(NSArray *) fileNames;

在.m:

- (void)application:(NSApplication *)sender openFiles:(NSArray *) fileNames 
    NSLog(@"Files dragged on: %@", fileNames);

在您的 xxx.plist 中,在 CFBundleDocumentTypes 下创建一个新条目:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>*</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>NSFilenamesPboardType</string>
        <key>CFBundleTypeRole</key>
        <string>None</string>
    </dict>
</array>

【讨论】:

【参考方案2】:

根据post 判断,您可能只需要为NSFilenamesPboardType 而不是imagePastBoardTypes 注册视图即可接收任意文件类型。

【讨论】:

以上是关于Cocoa:拖放任何文件类型的主要内容,如果未能解决你的问题,请参考以下文章

如何让一个窗口在 Xcode 中接收拖放文件

Cocoa NSView 子视图阻止拖放

ubuntu使用了无效的拖放类型

Cocoa 多窗口拖放示例

将文件拖入 cocoa OSX 中的其他应用程序

Cocoa NSTextField 拖放需要子类...真的吗?