2014-02-06 2 views
2

Мне нужно перетащить изображения из браузера в приложение Mac. При перетаскивании изображений из тега img он работает отлично, но когда есть связь между img, это не работает. NSPasteboard получает NSURL из ссылки, а не из источника img. Перетаскивание обратной связи показывает изображение, поэтому я думаю, что он отправляет данные изображения. Я проверил свойствоListForType из NSPasteboard, и он содержит только ссылку href.Как перетаскивать изображения из браузера в приложение Cocoa

- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender 
{ 
    if ([sender draggingSource] == nil){ 
     NSPasteboard *pboard = [sender draggingPasteboard]; 
     if ([[pboard types] containsObject:NSURLPboardType]){ 
      NSURL* file = [NSURL URLFromPasteboard: [sender draggingPasteboard]]; 
      //if <img> tag, file is src. If <a><img></a>, it’s link href 

      //DOWNLOAD image here 
     } 
    } 
}  
+0

Вы хотите получить URL-адрес или будете довольны только изображением? –

+0

Если у меня есть изображение, я тоже буду счастлив :) Но мне нужно знать расширение файла, а не только представление TIFF –

ответ

0

На NSPasteboard должно быть множество типов. Первое, что я делаю всякий раз, когда я пишу любой код получения картона, - это написать код отладки, который удаляет ВСЕ доступные типы и их значения, которые я получаю, когда в моем представлении происходит перетаскивание. Тогда я просто выбираю и выбираю те, которые я хочу.

В начале, просто

NSLog(@“types %@“, pboard.types); 

Я оставлю его в качестве упражнения сбросить значения. :)

Смежные вопросы