Hallo zusammen,
da ich jetzt ein MBP mit M1 habe, wollte ich meine alten Programme für den M1 fit machen (die meisten Dinge sind uralt Intel/PPC 32 Bit).
Ein kleines Programm habe ich jetzt dabei noch um Drag&Drop (nur "Destination") erweitert, aber ich glaube, meine Lösung ist nicht wirklich elegant.
Es handelt sich um ein relativ einfaches Projekt mit einem AppDelegate.m als zentrale Komponente (kein WindowController, DocumentController, oder ähnliches). In Xcode habe ich dann die Menüs, Fenster, usw. erstellt.
Die Hierarchie bei dem Fenster ist dabei wie folgt
Jetzt wollte ich den NSView als "NSDraggingDestination" nutzen. Dazu habe ich dann eine eigene NSView-Klasse erzeugt und die "dragging-Methoden" implementiert.
Nun empfängt die "performDrag…" Methode die URL von der Datei, die "gedropped" wurde:
Aber wie kann jetzt der View die URL an AppDelegate.m übergeben und das Laden der Datei triggern?
In meiner aktuellen Lösung übergibt AppDelegate.m in "applicationDidFinishLaunching" sich selbst an den NSView, damit der View dann in "performDrag" die entsprechende Methode zum Laden der Datei aufrufen kann.
Also sowas wie
Aber das müsste doch einfacher gehen, oder?
Und sollte ich nicht lieber den NSScrollView anstatt den NSView für Drag&Drop nutzen? Wenn ich z.B. eine optische Rückmeldung dabei geben möchte?
Danke und Grüße
Alex
da ich jetzt ein MBP mit M1 habe, wollte ich meine alten Programme für den M1 fit machen (die meisten Dinge sind uralt Intel/PPC 32 Bit).
Ein kleines Programm habe ich jetzt dabei noch um Drag&Drop (nur "Destination") erweitert, aber ich glaube, meine Lösung ist nicht wirklich elegant.
Es handelt sich um ein relativ einfaches Projekt mit einem AppDelegate.m als zentrale Komponente (kein WindowController, DocumentController, oder ähnliches). In Xcode habe ich dann die Menüs, Fenster, usw. erstellt.
Die Hierarchie bei dem Fenster ist dabei wie folgt
Jetzt wollte ich den NSView als "NSDraggingDestination" nutzen. Dazu habe ich dann eine eigene NSView-Klasse erzeugt und die "dragging-Methoden" implementiert.
Nun empfängt die "performDrag…" Methode die URL von der Datei, die "gedropped" wurde:
Aber wie kann jetzt der View die URL an AppDelegate.m übergeben und das Laden der Datei triggern?
In meiner aktuellen Lösung übergibt AppDelegate.m in "applicationDidFinishLaunching" sich selbst an den NSView, damit der View dann in "performDrag" die entsprechende Methode zum Laden der Datei aufrufen kann.
Also sowas wie
Und sollte ich nicht lieber den NSScrollView anstatt den NSView für Drag&Drop nutzen? Wenn ich z.B. eine optische Rückmeldung dabei geben möchte?
Danke und Grüße
Alex