Domanda

Quindi voglio trascinare un oggetto da una fonte a più destinazioni possibili. Quando l'oggetto è sopra ogni destinazione, voglio che 'morph' in un'immagine diversa. C'è un modo semplice per fare questo dal punto di vista NSDragSource?

È stato utile?

Soluzione

Non c'è modo per farlo utilizzando solo le API di trascinamento.

Se si guarda Interface Builder si fa qualcosa di simile a ciò che si desidera. Quando si trascina un pulsante dalla biblioteca pulsante anima nel mezzo del trascinamento.

Secondo la maggioranza delle persone il modo in cui Apple sta facendo questo è di rendere l'immagine di trascinamento di una piccola immagine trasparente. Poi creare una finestra e farlo seguire il mouse. È quindi possibile utilizzare la finestra per fare qualsiasi tipo di animazione che si desidera.

Altri suggerimenti

È possibile farlo utilizzando il metodo di enumerateDraggingItemsWithOptions: NSDraggingInfo a metodi del gestore del tuo destinazione trascinando (vale a dire - l'implementazione del protocollo NSDraggingDestination).

Ad esempio:

- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender
{
    NSImage* newDragImage = <take it from wherever>;
    [sender enumerateDraggingItemsWithOptions:0
                                      forView:sender.draggingSource
                                      classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
                                searchOptions:nil
                                   usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) {
                                       NSRect theFrame = draggingItem.draggingFrame;
                                       theFrame.size = newDragImage.size;
                                       [draggingItem setDraggingFrame:theFrame contents:newDragImage];
                                       *stop = NO;
                                   }];
}

Joshua Nozzi ha pubblicato un ottimo modo per fare questo: http: //joshua.nozzi .name / 2009/10 / jlndrageffectmanager /

Scopri il metodo di enumerateDraggingItemsWithOptions NSDraggingInfo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top