2012-04-25 32 views
2

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

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

我试图注册kUTTypeURL但是这似乎并没有工作,因为拖的URL被退回原籍:

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

回答

0

my accepted answer到您的其他问题,我专门提供的代码限制网址,您的应用程序可以接受的文件网址:

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

注意包含布尔YESNSPasteboardURLReadingFileURLsOnlyKey选项字典。

如果你想接受任何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]]; 
+0

公平点。我没有注意拖动操作的纸板面。感谢您指出了这一点。 – Roger 2012-04-26 00:08:33

+0

这很好。我简化了原始问题的答案,使用'NSPasteboardURLReadingContentsConformToTypesKey',直到今天我都没有意识到自己,所以我们都学到了一些东西:-) – 2012-04-26 00:12:57

相关问题