Donc, je veux faire glisser un objet d'une source à plusieurs destinations potentielles. Lorsque l'objet est sur chaque destination, je veux que ce soit «morph» dans une image différente. Y a-t-il un moyen simple de le faire depuis le point de vue de NsdragSource? P>
4 Réponses :
Il n'y a aucun moyen de le faire en utilisant uniquement les API de la source de glisser. P>
Si vous regardez au constructeur d'interface, il fait quelque chose de similaire à ce que vous voulez. Lorsque vous faites glisser un bouton de la bibliothèque, le bouton anime au milieu de la traînée. P>
Selon la plupart des gens, la façon dont Apple fait cela, c'est en faisant l'image de glisser une petite image transparente. Ensuite, ils créent une fenêtre et suivent la souris. Vous pouvez ensuite utiliser la fenêtre pour effectuer n'importe quel type d'animation que vous souhaitez. P>
Au moins 10,7+ la réponse acceptée n'est plus correcte - voir Иван георгиев Réponse pour la voie actuelle de changer de choses à mi-glisser-froid!
Joshua Nozzi a posté un excellent moyen de faire ceci: http: //joshua.nozzi .name / 2009/10 / JlndrageFtManager / P>
Ouais. Ceci est un gestionnaire de chute pour cet effet particulier. Le téléchargement contient une application de démonstration.
Si vous finissez par utiliser cette classe, faites-le-moi savoir et je vais ajouter votre application à la liste sur la page source.
Consultez NSDRAGGGGGINGIFO
Veuillez éditer votre réponse à Elaborer: comment utiliseriez-vous cette méthode pour résoudre ce problème?
Vous pouvez le faire en utilisant Par exemple: P> énumérerRaggingSwithOptions: code> méthode de
nsdragginginfo code> dans les méthodes de gestion de la destination de glisser (c.-à-d. - Votre implémentation de
NsdraggingDestination code> protocole) .
- (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;
}];
}