Per le immagini che non sono anche collegamenti, il seguente codice registrerà l'URL di provenienza di un'immagine trascinata. Questo funziona per me in 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
Se l'immagine è anche un collegamento, l'URL registrato è un href di tale collegamento. È anche possibile ottenere l'URL "da dove" di un file (come visualizzato nel pannello Ottieni informazioni del Finder) utilizzando la chiave kMDItemWhereFroms degli attributi estesi.
Bella domanda, ma sospetto che se non si vede alcun URL nel trascinamento in arrivo, non ci sarebbe alcun modo per interrogare il browser da cui proviene l'immagine. Questo è qualcosa che ogni produttore di browser (Safari, Firefox, Chrome, ecc.) Dovrebbe fornire nelle loro implementazioni di trascinamento. Forse richieste di miglioramento dei file in Radar (per Safari) e Bugzilla (per Firefox)? –
Grazie per l'input. È almeno possibile sapere da quale app proviene il trascinamento? – 0xSina
No, non lo è. Questo non è passato come parte delle informazioni di trascinamento. –