Also ich möchte ein Objekt von einer Quelle auf mehrere potenzielle Ziele ziehen. Wenn sich das Objekt über jedem Ziel befindet, möchte ich, dass es sich in ein anderes Bild verwandelt. Gibt es einen einfachen Weg, dies aus der NSDragSource-Perspektive zu tun?Wie ändern Sie ein Ziehen-und-Ablegen-Bild während des Ziehens?
Antwort
Es gibt keine Möglichkeit, dies nur mit den Drag-Source-APIs zu tun.
Wenn Sie sich den Interface Builder anschauen, wird etwas Ähnliches wie gewünscht ausgeführt. Wenn Sie eine Schaltfläche aus der Bibliothek ziehen, wird die Schaltfläche in der Mitte des Ziehens animiert.
Nach den meisten Menschen ist die Art, wie Apple dies tut, indem Sie das Ziehbild ein kleines transparentes Bild machen. Dann erstellen sie ein Fenster und lassen es der Maus folgen. Sie können dann das Fenster verwenden, um jede gewünschte Art von Animation auszuführen.
Joshua Nozzi hat eine große Weise geschrieben, dies zu tun: http://joshua.nozzi.name/2009/10/jlndrageffectmanager/
Ja. Dies ist ein Drop-In-Manager für diesen bestimmten Effekt. Der Download enthält eine Demo-App. –
Wenn Sie diese Klasse verwenden, lassen Sie es mich wissen und ich füge Ihre App der Liste auf der Quellseite hinzu. –
Check out enumerateDraggingItemsWithOptions Methode des NSDraggingInfo.
Bitte bearbeiten Sie Ihre Antwort, um zu erläutern: Wie würden Sie diese Methode verwenden, um dieses Problem zu lösen? –
Sie können dies tun, indem Sie die Methode enumerateDraggingItemsWithOptions:
Methode NSDraggingInfo
in den Handler-Methoden Ihres Ziehvorgangs verwenden (d. H. - Ihre Implementierung des Protokolls NSDraggingDestination
).
Zum Beispiel:
- (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;
}];
}
- 1. Größe des ziehbaren Elements beim Start des Ziehens ändern
- 2. Wie Sie View.OnDragListener in Android während des Ziehens der Operation abbrechen?
- 3. Auf gitter halten Sie das Widget unter der Maus während des Ziehens
- 4. API zum Emulieren des Ziehens einer Datei in ein Fenster
- 5. Gibt es eine Möglichkeit, Git während des Ziehens aus einem Repo ausführlicher zu machen?
- 6. Ändern des Modells während des Trainings [Tensorflow]
- 7. Warum gehen meine Ansichten während des Ziehens hinter meine anderen Ansichten?
- 8. Können Sie einen Dateiinhalt während des Git-Commits ändern?
- 9. Ändern Sie ein Bild während der Animation mit Storyboard
- 10. Ändern der "Proc" -Bindung während des Aufrufs
- 11. Wie überschreiben Sie log4j.properties während des Testens?
- 12. Fügen Sie während des Funktionsaufrufs einen Parameter in kwargs ein?
- 13. Django Größe während des Uploads ändern
- 14. Wie programmgesteuert ein Symbol des TextView ändern?
- 15. Aktivieren und Deaktivieren des Ziehens von Anmerkungen (On The Fly) (iOS Mapkit)
- 16. Wie können Sie die ChromeDriver-Einstellungen während der Ausführung des Programms ändern?
- 17. Powershell ISE friert während des Tötungsvorgangs ein
- 18. Ändern Wert Eingabefeld während
- 19. DataGridView Datumsformat ändern während des Druckens in C#
- 20. Wert eines Django-Formularfelds während des clean() ändern
- 21. Ändern Sie die Schriftgröße des über ein Optionsfeld aktivierten Werts
- 22. CSS: ändern Sie die Höhe des Headers, während Sie auf einem anderen Element schweben
- 23. Wie Sie .NET-Konfigurationsdateien während der Installation ändern?
- 24. Ändern Sie ein Element des globalen Vektors in einer Funktion
- 25. CruiseControl.net - Wie man während des Builds eincheckt
- 26. CSS Farbe des TD-Hintergrunds während Hover in Zeile ändern
- 27. Ändern der Eingabedatenschicht während des Trainings in Caffe
- 28. Wie importiere ich ein aktuelles Paket während des Python Interpreters?
- 29. Wie manuell ein net.socket error Ereignis während des Testens
- 30. Ändern des Wertes Bereich während der Iteration in Python
Mindestens ab 10.7+ die akzeptierte Antwort ist nicht mehr richtig - Иван Георгиев Antwort für die aktuelle Art und Weise sehen zu stopfen Mitte ziehen zu ändern! – cacau