Hallo zusammen,
ich versuche die Drag&Drop-Funktionalität für eine Menu-Bar-App zu realisieren. Für eine "normale" App ist das kein Problem, da hat man ein NSView mit Methoden wie shouldAllowDrag, draggingEntered usw... Dazu gibt es noch ein Delegate-Protokoll, welches von Delegate-Klasse implementiert wird. Dieser Fall ist, wie gesagt, kein Problem.
In meinem Fall habe ich ja kein Programmfenster, in welches NSView eingebettet wird. Ich habe versucht beim Anlegen des Menüs ein NSView zu erzeugen:
Dazu die entsprechende StatusItemView-Klasse:
Alles anzeigen
Damit habe ich leider keinen Erfolg. Ich vermute ein NSView bringt ohne NSWindow nicht viel, aber ich habe keine andere Idee. Vielleicht hat jemand einen Tipp für mich?
ich versuche die Drag&Drop-Funktionalität für eine Menu-Bar-App zu realisieren. Für eine "normale" App ist das kein Problem, da hat man ein NSView mit Methoden wie shouldAllowDrag, draggingEntered usw... Dazu gibt es noch ein Delegate-Protokoll, welches von Delegate-Klasse implementiert wird. Dieser Fall ist, wie gesagt, kein Problem.
In meinem Fall habe ich ja kein Programmfenster, in welches NSView eingebettet wird. Ich habe versucht beim Anlegen des Menüs ein NSView zu erzeugen:
Dazu die entsprechende StatusItemView-Klasse:
Quellcode
- var item: NSStatusItem?
- var delegate: DropViewDelegate?
- let types = [NSPasteboard.PasteboardType.png, NSPasteboard.PasteboardType.fileURL]
- let filteringOptions = [NSPasteboard.ReadingOptionKey.urlReadingContentsConformToTypes:NSImage.imageTypes]
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
- self.registerForDraggedTypes(types)
- }
- convenience init(with item: NSStatusItem) {
- let itemRect = NSMakeRect(0.0, 0.0, item.length, item.length)
- self.init(frame: itemRect)
- }
Swift-Anfänger