3

我想知道如何检索用户拖放到可可应用程序中的文件的路径。例如:用户从他/她的桌面拖动一个名为 test 的文件。然后可可应用程序会说:用户/当前用户名/桌面/测试

谢谢您的帮助!

4

3 回答 3

2

我刚刚下载了Apple 的“CocoaDragAndDrop”示例代码并试用了一下。

当我将 PNG 文件从 Finder 拖入正在运行的应用程序时,窗口的标题会更改为拖入的图像的路径。

查看示例代码,我可以看到粘贴板中包含一个文件 URL:

 //if the drag comes from a file, set the window title to the filename
 fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
 [[self window] setTitle: fileURL!=NULL ? [fileURL absoluteString] : @"(no name)"];

在您自己的代码中尝试这种技术并根据需要对其进行修改。

于 2012-08-09T19:57:49.007 回答
1

接受的答案不再适用于 Xcode 6。我发现这种方法可以获得相同的结果:

    NSURL*fileURL = [NSURL URLFromPasteboard: [sender draggingPasteboard]];
    NSString *filePath = [fileURL path];
    [[self window] setTitle:filePath];
于 2015-01-02T11:36:25.693 回答
1

目前正在开发类似的界面,我了解到 OP 要求的是path,而不是 URL 检索。对于已接受的答案,建议的 OS X 10.10 (XCode6) 解决方法似乎存在拒绝在窗口之间拖放内容的问题。

但是,避免声明 NSString *filePath,而是简单地将建议示例代码的 DragDropImageView.m 的第 175 行中的 [fileURL absoluteString] 方法替换为 [fileURL path] 方法,似乎可以解决它:

    fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
    [[self window] setTitle: fileURL!=NULL ? [fileURL path] : @"(no name)"];

它按照 Xcode4 到 Xcode6、SDK 10.8-10.10、AFAICT 的设计编译和运行。

希望这能有所帮助。

于 2015-03-18T19:42:23.333 回答