我想知道如何检索用户拖放到cocoa应用程序中的文件路径。例如:用户从他/她的桌面拖动名为test的文件。然后cocoa应用程序会说:Users / currentusername / Desktop / test
感谢您的帮助!
答案 0 :(得分:2)
我刚刚下载了Apple's "CocoaDragAndDrop" sample code并试用了它。
当我将Finder中的PNG文件拖入正在运行的应用程序时,窗口标题将更改为拖入的图像的路径。
查看示例代码,我可以看到粘贴板中包含文件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)"];
在您自己的代码中尝试使用此技术并根据需要对其进行修改。
答案 1 :(得分:1)
接受的答案不再适用于Xcode 6。 我发现这个方法得到了相同的结果:
NSURL*fileURL = [NSURL URLFromPasteboard: [sender draggingPasteboard]];
NSString *filePath = [fileURL path];
[[self window] setTitle:filePath];
答案 2 :(得分:1)
目前正致力于开发类似的界面,我知道OP已经要求路径,而不是URL检索。对于已接受的答案,建议的OS X 10.10(XCode6)解决方案似乎存在拒绝在窗口之间拖放内容的问题。
但是,避免声明NSString * filePath,而只是在建议的示例代码的DragDropImageView.m的第175行中使用[fileURL path]方法替换[fileURL absoluteString]方法,似乎可以解决它:
fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
[[self window] setTitle: fileURL!=NULL ? [fileURL path] : @"(no name)"];
它在Xcode4中通过Xcode6,SDK 10.8-10.10,AFAICT进行编译和运行。
希望这可以提供帮助。