我发布了this question关于将内容从OS X Finder拖到NSTableView
的问题。这一切都很好用。但是,如果我想将URL从浏览器地址栏拖到我的应用程序中,我首先需要将它们拖到桌面上(它们显示为.webloc文件),然后将它们拖到我的应用程序中。
有没有办法直接将它们从浏览器地址栏拖到我的应用中,而不必先将它们拖到桌面上?
我尝试注册kUTTypeURL
但这似乎不起作用,因为拖动的网址会反弹回原点:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: (NSString*)kUTTypeFileURL, (NSString*)kUTTypeURL, nil]];
答案 0 :(得分:0)
在my accepted answer的问题中,我提供的代码专门限制了您的应用可以接受的文件网址:
NSArray* urls = [pb readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]]
options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey: NSPasteboardURLReadingFileURLsOnlyKey]];
请注意包含YES
的布尔NSPasteboardURLReadingFileURLsOnlyKey
的选项字典。
如果您想接受任何网址,请执行以下操作:
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]];