2012-07-03 4 views
6

Die eingebaute Batterie, Wi-Fi, Ton, etc. zu bewegen, Apple-Statuselemente geliefert wird, kann durch die Verwendung cmd auf dem Menü in jede beliebige Position gezogen werden + klicken und ziehen:Cmd + Klick auf Statuseintrag

Wie kann ich ähnliche Funktionen in meinem eigenen Statuselement unterstützen?

Antwort

11

Es gibt zwei Möglichkeiten, Menüs auf der rechten Seite der Menüleiste zu erhalten. Der offiziell unterstützte Weg ist das Erstellen einer NSStatusItem in Ihrer App. Die andere Möglichkeit besteht darin, ein NSMenuExtra zu erstellen. Sie haben einen Unterschied bemerkt: NSStatusItem Menüs sind fest an Ort und Stelle, während die Menü Extras können verschoben werden, indem Sie sie ziehen und ziehen. Der andere große Unterschied, und der Grund, warum 3rd-Party-Menü Extras nicht offiziell unterstützt werden, ist, dass im Gegensatz zu Statuselementen (die als separate Anwendungen laufen) Menü Extras in den Adressraum des SystemUIServer-Prozesses geladen werden. Das heißt, wenn sie drunter und drüber gehen, können sie die Benutzeroberfläche abbauen.

Sie können die auf Ihrem System installierten Menü Extras unter /System/Library/CoreServices/Menu Extras sehen. Es kann immer noch möglich sein, eigene Dateien zu erstellen und vom Betriebssystem laden zu lassen, aber Sie werden Probleme bekommen, wenn Sie versuchen, das Ergebnis zu versenden. Es ist besser, zu bugreport.apple.com zu gehen und sie wissen zu lassen, dass NSStatusItems ziehbar sein sollte.

Wikipedia has more info on Menu Extras, einschließlich einiger Links zu einem tutorial on building your own.