我想知道如何检索用户拖放到可可应用程序中的文件的路径。例如:用户从他/她的桌面拖动一个名为 test 的文件。然后可可应用程序会说:用户/当前用户名/桌面/测试
谢谢您的帮助!
我刚刚下载了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)"];
在您自己的代码中尝试这种技术并根据需要对其进行修改。
接受的答案不再适用于 Xcode 6。我发现这种方法可以获得相同的结果:
NSURL*fileURL = [NSURL URLFromPasteboard: [sender draggingPasteboard]];
NSString *filePath = [fileURL path];
[[self window] setTitle:filePath];
目前正在开发类似的界面,我了解到 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 的设计编译和运行。
希望这能有所帮助。