我正在用可可开发一个flvplayer。我想从finder拖动一个flv文件并将其放到webview窗口(我用它来查看flv)。但我没有找到这个文件的路径。这是我的代码:
_ (void)showflv(nsstring*)aa
{
..........
//Register to accept flv drag/drop
NSString *pboardType = NSCreateFileContentsPboardType(@"flv");
NSArray *dragTypes = [NSArray arrayWithObject:pboardType];
[self registerForDraggedTypes:dragTypes];
}
_ (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSFileContentsPboardType] ) {
}
return YES;
}
我阅读了关于此的文档。我发现PerformDragOperation的功能可以这样写:
_ (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSFileContentsPboardType] ) {
NSFileWrapper *fileContents = [pboard readFileWrapper];
// Perform operation using the file’s contents
}
return YES;
}
我可以获取此拖动文件的文件内容。但是如何获取路径?
NSString *fileName = [fileContents filename];
我做了一个测试,这是不正确的。
我做了一个测试,但是draggedFilePaths没有用。我发现代码:
NSPasteboard *pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSFileContentsPboardType] ) {
//NSFileWrapper *fileContents = [pboard readFileWrapper];
// Perform operation using the file’s contents
nslog(@"aa");
}
当app运行时,字符串“aa”没有出现,为什么?
答案 0 :(得分:8)
像这样:
NSArray *draggedFilePaths = [pboard propertyListForType:NSFilenamesPboardType];
答案 1 :(得分:0)
NSPasteboard *pastboard = [sender draggingPasteboard];
NSURL *URL = [NSURL URLFromPasteboard:pastboard];
NSLog(@"%@", URL);