cocoa - 如何在 Mac OS X 10.5 中处理 Finder 中的多个文件拖放操作?

标签 cocoa macos drag-and-drop finder nspasteboard

我需要获取从 Finder 拖/放到我的应用程序中的所有文件的 URL。

我有一个在 10.6 上运行的 Cocoa 应用程序,它通过使用新的 10.6 NSPasteboard API 来处理粘贴板上的多个项目。我正在尝试将此应用程序向后移植到 10.5。我该如何在 10.5 上处理这个问题?

如果我执行如下操作,我只会获得第一个 URL:

    NSArray *pasteTypes = [NSArray arrayWithObjects: NSURLPboardType, nil];
    NSString *bestType = [pboard availableTypeFromArray:pasteTypes]; 
    if (bestType != nil) {
        NSURL *url = [NSURL URLFromPasteboard:pboard];
    }        

最佳答案

获取多个文件名很容易:(使用 10.5 获取 multiple URLs is not)

  1. 注册您的 View NSFilenamesPboardType
  2. performDragOperation:中执行以下操作以获取文件路径数组:
<小时/>
NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];

关于cocoa - 如何在 Mac OS X 10.5 中处理 Finder 中的多个文件拖放操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998158/

相关文章:

来自 toolStrip 的 C# DragDrop

macos - 如何将 NSObjectController 与 Core Data 结合使用?

objective-c - 将 NSPredicateEditor 绑定(bind)到共享用户默认 Controller

Cocoa 和 Swift - 我想使用 Swift 4 和 Cocoa for Mac OS 应用程序进行简单的 REST API 调用

macos - xcodebuild测试,无需构建。如何从命令行覆盖测试运行参数

c++ - 适用于 Mac 的 Excel SDK

javascript - 如何突出显示列表中的随机单词

cocoa - 如何在 MacOS X Obj-C 中解压缩文件?

node.js - 如何使用 HomeBrew 安装 nodejs 4.1.2

android - 如何避免 Android 按钮拖出屏幕