Для изображений, которые не являются также ссылками, следующий код будет регистрировать URL-адрес, из которого вышло перетаскивание изображения. Это работает для меня в Safari & Firefox.
@implementation DragView
- (void)awakeFromNib {
[self registerForDraggedTypes:[NSArray arrayWithObject:NSURLPboardType]];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
return NSDragOperationCopy;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
pboard = [sender draggingPasteboard];
NSLog(@"types: %@", [pboard types]);
NSLog(@"url: %@", [NSURL URLFromPasteboard:pboard]);
return YES;
}
@end
Если изображение является также ссылкой, зарегистрированный URL-адрес является ссылкой на эту ссылку. Также можно получить URL-адрес «откуда» от файла (как показано на панели «Получить информацию» Finder) с помощью ключа kMDItemWhereFroms расширенных атрибутов.
Хороший вопрос, но я подозреваю, что если вы не видите URL-адрес входящего перетаскивания, не было бы способа запросить браузер, откуда это изображение. Это то, что каждый производитель браузера (Safari, Firefox, Chrome и т. Д.) Должен был бы предоставить в своих реализациях перетаскивания. Возможно, запросы на улучшение файлов в Radar (для Safari) и Bugzilla (для Firefox)? –
Спасибо за ввод. По крайней мере, можно узнать, из какого приложения получилось перетащить? – 0xSina
Нет, это не так. Это не передается как часть информации перетаскивания. –