2012-04-18 13 views
5

Ho implementato un semplice trascinamento. Lo scopo principale è che gli utenti trascinino e rilasciano le immagini da un browser. È possibile per me ottenere l'URL da cui è stata trascinata l'immagine?Drag and Drop - È possibile ottenere l'URL?

Quindi diciamo, sono su SO e trascino il logo. C'è un modo per me di sapere che questo è stato da http://stackoverflow.com? Grazie

+0

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)? –

+0

Grazie per l'input. È almeno possibile sapere da quale app proviene il trascinamento? – 0xSina

+0

No, non lo è. Questo non è passato come parte delle informazioni di trascinamento. –

risposta

5

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.

+0

Grazie, ma non è quello che stavo cercando – 0xSina

+0

Cosa stavi cercando? – mrwalker

+0

Non voglio l'URL dell'immagine .Voglio l'URL della pagina web è stato trascinato da. – 0xSina