如何在Cocoa应用程序中从iTunes接受拖动的行?
我的应用程序中有两个对象可以接受拖放:NSTableView和自定义视图。两者都可以识别从查找程序中拖动的文件,但都不能识别从iTunes中拖动的行。
最佳答案
好吧,这就是答案。这将处理从iTunes拖动内容以及从查找器中拖动文件的问题。您得到的是文件路径列表。 “发送者”是具有拖动粘贴板的人。简短的答案是,“ com.apple.pasteboard.promised-file-url”是您需要从iTunes粘贴中获取的密钥。
NSMutableArray *paths = [NSMutableArray arrayWithCapacity:1];
NSArray *pasteboardTypes = [NSArray arrayWithObjects:@"com.apple.pasteboard.promised-file-url", @"public.file-url", nil];
for(NSPasteboardItem *item in [[sender draggingPasteboard] pasteboardItems]) {
NSString *urlString = nil;
for(NSString *type in pasteboardTypes) {
if([[item types] containsObject:type]) {
urlString = [item stringForType:type];
break;
}
}
if(urlString) {
NSString *path = [[NSURL URLWithString:urlString] path];
[paths addObject:path];
}
}
NSLog(@"Pasted Paths: %@", paths);