2017-05-20 5 views
0

Ich habe ein Menüleistensymbol hinzugefügt, das ein Popover öffnet. Es funktioniert zwar, aber wenn ich die App über das rote Kreuz schließe und versuche, die App mit einem Klick auf das Dock-Icon erneut zu öffnen, öffnet sich das Anwendungsfenster (wie es soll) aber auch das Popover der Menüleiste (was nicht sein sollte). Wie kann ich das Anwendungsfenster und nicht das Popover nur öffnen, wenn ich auf das Docksymbol klicke? Mein Code, der das Öffnen beim Klicken auf das Dock-Symbol behandelt, sieht folgendermaßen aus:Menüleiste Popover Öffnet das Docksymbol Klicken Sie auf OSX

Antwort

0

Ich habe dieses Problem heute auch gelöst. Ich hatte den gleichen Code, also versuchte ich irgendwie zu erkennen, wenn window Popover ist, aber fehlgeschlagen. Auch ich fand, dass, wenn Sie Hauptfenster nach Start und klicken Sie dann Dock-Symbol, wenn Sie sender.windows drucken, zeigt es 3 Elemente (in meinem Fall): <NSStatusBarWindow: 0x101300110>, <NSStatusBarWindow: 0x101108800>, <NSWindow: 0x6080001e0400> und öffnet nur Hauptfenster, ohne Popover, aber wenn Popover geöffnet wurde einmal, dann klicken auf das Dock-Icon (wenn das Hauptfenster geschlossen ist), zeigt sowohl das Hauptfenster als auch das Popover. Und print(window) im for Zyklus zeigt jetzt 4 Elemente - das letzte ist <_NSPopoverWindow: 0x1011284b0>.
Und auch ich druckte popover.isShown, und es sagt false, auch nachdem das Popover durch Klicken auf das Dock-Symbol geöffnet wird. Ich konnte keine Möglichkeit finden, dieses bestimmte Fenster zu erkennen und zu ignorieren.

So ist der einzige Weg, ich fand, ist

for window: AnyObject in sender.windows { 
     window.makeKeyAndOrderFront(self) 
    } 

mit

sender.windows[2].makeKeyAndOrderFront(self) 

zu ersetzen, weil jedes Mal das Hauptfenster auf dem dritten Platz erscheint
Hoffnung gibt es eine bessere Art und Weise und jemand wird uns lehren.

Verwandte Themen