2

我发布了这个关于将内容从 OS X Finder 拖入NSTableView. 现在这一切都很好。但是,如果我想将 URL 从浏览器地址栏中拖到我的应用程序中,我首先需要将它们拖到桌面(它们显示为 .webloc 文件),然后将它们拖到我的应用程序中。

有没有办法直接将它们从浏览器地址栏中拖到我的应用程序中,而不必先将它们拖到桌面?

我尝试注册kUTTypeURL,但这似乎不起作用,因为拖动的 URL 会反弹回其原点:

[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: (NSString*)kUTTypeFileURL, (NSString*)kUTTypeURL, nil]];
4

1 回答 1

0

我接受的对您的其他问题的回答中,我提供的代码专门将您的应用可以接受的 URL 限制为文件 URL:

NSArray* urls = [pb readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]]
 options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] 
                                     forKey: NSPasteboardURLReadingFileURLsOnlyKey]];

请注意包含布尔值的选项YES字典NSPasteboardURLReadingFileURLsOnlyKey

如果您想接受任何 URL,只需执行以下操作:

NSArray* urls = [pb readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]]
                                  options:nil];

或者更好的是,您可以要求您接受任何 URL,只要它是特定类型的,在本例中为图像:

NSArray* acceptedTypes = [NSArray arrayWithObject:(NSString*)kUTTypeImage];
NSArray* urls = [pb readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]]
                                  options:[NSDictionary dictionaryWithObject:acceptedTypes 
                                   forKey:NSPasteboardURLReadingContentsConformToTypesKey]];
于 2012-04-25T23:56:26.200 回答