Frage

Sie alle kennen die Menüleiste (oder besser gesagt NSStatusBar) in Mac OS X.
Es gibt einige Elemente, die ich kann und andere bewegen, die nicht.

Ich möchte in der Lage sein, die NSStatusItem meiner App zu ziehen.

Jede Idee, wie diese umzusetzen?

War es hilfreich?

Lösung

Obwohl NSStatusItems in der Nähe von Apple intern „Menü Extras“ erscheinen, sind sie verschieden und verhalten sich anders. Es wäre schön, wenn Apple die Elemente vereinigt, die im rechten Bereich der Menüleiste, aber jetzt der Abschnitt gliedert sich in verschiedene „apple intern“ (rechts) und „app-bereitgestellt (NSStatusItem) erscheinen können "auf der linken Seite.

Sie können den Unterschied sichtbar machen, indem Sie Ihren Computer in Screen-Capture-Modus (cmd-shift-4) und Drücken der Leertaste setzen zu wechseln „ganze Fenster erfassen“. Wenn Sie über Apple Menü-Icons schweben, werden Sie sehen, dass sie alle in einem einzigen Fenster leben. Dies erklärt, ihre Fähigkeit zu leicht verwaltet und gezogen werden. Bewegen der Maus über die anderen Gegenstände zeigt, dass jeder NSStatusItem in der Tat in einem einzigen Fenster der eigenen lebenden (die von der Anmeldung gehört zu werden passiert, dass es installiert ist).

Es ist am besten mit NSStatusItem bleiben, auch wenn man sie nicht ziehen. Es ist ein Manko von Apple, die die meisten Benutzer verstehen, auch wenn es ärgerlich ist. Betonung der positiven Abwägungen der eine stabilere Anwendung für langfristig anbieten wird in der Regel die Meinungen Ihrer Kunden (oder Manager?) Erweichen, die für die draggability drängen.

Andere Tipps

Sie müssen verwenden NSMenuExtra , nicht NSStatusItem und den Menüpunkt ein machen bündeln im Inneren des SystemUIServer Prozess ausgeführt wird, nicht Ihre eigene App. Sie finden auch, dass benötigen Code wie durch MenuCracker versorgt diese an die Arbeit.

NSMenuExtra ist nicht dokumentiert und nicht unterstützt, und betrachten daher ein "Hack".

Meine Vermutung für zwei APIs in erster Linie zu sein: ein Menü Extra abstürzt (oder Speicher undicht) ist die gesamte SystemUIServer Prozess abstürzt oder Speicher undicht - einschließlich anderen Module von Drittanbietern sowie system mitgelieferten ist. Mit einem Statuseintrag, auf der anderen Seite ein solches Problem würde nur Ihren eigenen Code beeinflussen.

Ab macOS Sierra 10.12 http://www.macworld.co.uk/how-to/mac-software/7-sierra-menu-bar-tips-how -Nutzung-mac-menu-bar-in-macos-sierra-3649163 /

  

Third-Party-Anwendungen manchmal als Menü Extras installieren, müssen Steuerelemente, die in der Menüleiste vorhanden ist, oder kann als gesichtslose Anwendungen trotz anfänglich nicht so sein neu aufgelegt werden. Ab macOS Sierra können diese Menü Extras wie Einheimischen neu angeordnet werden. (Dies war nicht der Fall bis zum O X El Capitan.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top