Domanda

Per impostazione predefinita (a quanto pare), IKImageBrowserView permette il drag and drop per posizioni nel Finder. Vorrei disattivare questo comportamento, ma sono sicuro di come farlo. Stavo pensando che forse l'attuazione del protocollo di NSDraggingDestination e ridefinendo potrebbe risolvere questo problema, ma finora non ha funzionato per me.

Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

Se si desidera personalizzare il drag and drop comportamento di IKImageBrowserView, è possibile implementare il metodo - (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard in oggetto origine dei dati del browser. Che vi permetterà di definire quali tipi ei dati che si vogliono mettere sul tavolo di montaggio quando si fa un trascinamento. Se si desidera disattivare il trascinamento del tutto, si dovrebbe essere in grado di tornare solo 0 (il numero di elementi che si desidera essere trascinata).

Altri suggerimenti

Se ci si rivolge Lion è possibile ereditare IKImageBrowserView e sovrascrivere il draggingSession:sourceOperationMaskForDraggingContext: metodo di protocollo NSDraggingSource . Per evitare che trascina al di fuori della vostra applicazione basta tornare NSDragOperationNone se il contesto è NSDraggingContextOutsideApplication. In caso contrario, tornare le operazioni di trascinamento che ti interessa. In questo modo si può impedire trascina al desktop, Finder, ecc ma ancora permettere trascina all'interno di browser delle immagini dell'applicazione.

- (NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
    [super draggingSession:session sourceOperationMaskForDraggingContext:context];

    switch (context) {
        case NSDraggingContextOutsideApplication:
            return NSDragOperationNone;
            break;

        case NSDraggingContextWithinApplication:
            return NSDragOperationAll;
            break;

        default:
            return NSDragOperationAll;
            break;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top