如何将图像从浏览器拖放到Cocoa应用程序

时间:2014-02-06 00:16:04

标签: objective-c macos cocoa nspasteboard

我需要将图像从浏览器拖到mac应用程序中。从img标签拖动图像时,它可以很好地工作,但是当img之间存在链接时,它不起作用。 NSPasteboard从链接接收NSURL,而不是从img源接收。拖动反馈显示图像,所以我认为它正在发送图像数据。我从NSPasteboard检查了propertyListForType,它只包含链接href。

- (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
        }
    }
}    

1 个答案:

答案 0 :(得分:0)

NSPasteboard上应该提供多种类型。每当我编写任何粘贴板接收代码时,我做的第一件事就是编写一些调试代码,这些代码会转储所有可用的类型以及我在视图中发生拖动时获得的值。然后我只挑选我想要的那些。

首先,

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

我会把它作为一种倾销价值的练习。 :)