2012-04-25 2 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 на другой Ваш вопрос, код я представил специально ограничивает 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]]; 
+0

Справедливая точка. Я не обращал внимания на картографическую сторону операции перетаскивания. Спасибо что подметил это. – Roger

+0

Все в порядке. Я упростил ответ на ваш оригинальный вопрос, чтобы использовать «NSPasteboardURLReadingContentsConformToTypesKey», о котором я не знал о себе до сегодняшнего дня, поэтому мы оба узнали что-то :-) –