将行拖出iTunes进入Cocoa App

时间:2011-08-10 16:57:51

标签: cocoa drag-and-drop itunes nstableview

如何在Cocoa应用程序中接受来自iTunes的拖动行?

我的应用程序中有两个接受拖放的对象:NSTableView和自定义视图。两者都识别从取景器拖动的文件,但都不识别从iTunes拖动的行。

1 个答案:

答案 0 :(得分:1)

嗯,这是答案。这将处理从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);