Ich möchte Folgendes ausführen:
, wenn ich auf den Statusleisteneintrag klicke (NSStatusItem
) Ich möchte ihn (kein Menü) auf unbestimmte Zeit markieren und wenn die Anwendung den Fokus verliert, möchte ich aufhören, sie hervorzuheben.
Gibt es eine Möglichkeit, dies zu tun? Ich kann es nicht finden, tbh.Gibt es eine Möglichkeit, das Statusleistenelement programmgesteuert hervorzuheben?
Antwort
Sie können dies wahrscheinlich mit einer benutzerdefinierten Ansicht tun, die sends the status item a drawStatusBarBackgroundInRect:withHighlight:
message.
Ich bezweifle, dass es keine Möglichkeit gibt, es ohne eine benutzerdefinierte Ansicht zu tun, da, wie ich in meinem Kommentar zu der Frage erwähnt, das Element markiert, wenn der Benutzer nicht mit der Maus auf es sieht schlecht aussieht.
die Sache ist: Ich habe eine NSWindow (kein Popover), die direkt unter dem Statusleiste Element angezeigt wird (wenn geklickt). Also, was ich tun möchte, ist das NSMenu-Verhalten nachzuahmen: Ich klicke auf die Statusleiste, das Fenster wird angezeigt und das Element wird hervorgehoben, wenn die App den Fokus verliert, verschwindet das Fenster und das Element geht in den normalen Zustand über. –
@ PedroVieira: Klingt vernünftig. Wenn ich das tun würde, würde ich eine benutzerdefinierte Ansicht erstellen, wie ich sie in meiner Antwort beschrieben habe. –
Pedro, ich stehe jetzt genau vor dem gleichen Problem. Würde es Ihnen etwas ausmachen zu erzählen, wie Sie Peters Lösung implementiert haben? Prost. –
Alte Frage, aber ich denke, es lohnt sich, diese alternative Antwort hinzuzufügen.
Dies wird nicht automatisch hebt sie, wenn die Anwendung den Fokus verliert, aber dies ermöglicht es Ihnen, ohne eine benutzerdefinierte Ansicht zu markieren (wie die other answer erfordert):
NSStatusItem *statusItem = [self getStatusItem];
[statusItem.button setHighlighted:YES];
können Sie hebt sie es die manuell mit gleiche Methode:
[statusItem.button setHighlighted:NO];
Hinweis bekam ich diese Antwort aus einer ähnlichen Frage here.
- 1. Netbeans (7.4): Gibt es eine Möglichkeit, TODOs hervorzuheben?
- 2. Gibt es eine Möglichkeit, mehrere Suchen in (g) Vim hervorzuheben?
- 3. iOS - UITableView Index: Gibt es eine Möglichkeit, das ausgewählte Alphabet hervorzuheben?
- 4. Gibt es eine Möglichkeit, eine NSCollectionView in Swift programmgesteuert einzurichten?
- 5. Gibt es in Sphinx/Pygments eine Möglichkeit, eine oder mehrere Codezeilen in literalen Includes hervorzuheben?
- 6. Gibt es eine Möglichkeit, die Bearbeitung eines Textfelds programmgesteuert abzubrechen?
- 7. Gibt es eine Möglichkeit, ein Fenster programmgesteuert zu minimieren
- 8. Gibt es eine Möglichkeit, AT-COMMAND programmgesteuert in Android auszuführen?
- 9. Gibt es eine Möglichkeit, die Bildschirmhelligkeit programmgesteuert anzupassen?
- 10. Gibt es eine Möglichkeit programmgesteuert Python-Bytecode zu generieren?
- 11. Gibt es eine Möglichkeit, den Anwendungsnamen in Elmah programmgesteuert festzulegen?
- 12. Gibt es eine Möglichkeit, programmgesteuert erweitern Apples Expose
- 13. Gibt es eine Möglichkeit, das Add im Vollbild programmgesteuert zu öffnen?
- 14. Xamarin.Forms MVVM - Gibt es eine Möglichkeit, eine Bindung zu lösen?
- 15. Gibt es eine Möglichkeit, programmgesteuert festzustellen, ob eine Schriftartdatei über eine bestimmte Unicode-Glyphe verfügt?
- 16. Gibt es eine Möglichkeit, eine Oracle-Tabellendefinition programmgesteuert von einer Datenbank in eine andere zu verschieben?
- 17. Gibt es eine Möglichkeit, eine CABasicAnimation anzuhalten?
- 18. Gibt es für eine Klassenpfad-Ressource eine Möglichkeit, das java.io.File-Objekt abzurufen, das es enthält/enthält?
- 19. adb bugreport: Gibt es eine Möglichkeit, das Protokoll zurückzusetzen?
- 20. Gibt es eine Möglichkeit, das n-te Zeichen zu finden?
- 21. Gibt es eine Möglichkeit, das Ausgabevideogerät vom Browser auszuwählen?
- 22. Gibt es eine Möglichkeit, das Listenverständnis zu durchbrechen?
- 23. Gibt es eine Möglichkeit, das Standardverhalten von Klammern zu überschreiben?
- 24. Gibt es eine Möglichkeit, das aktuelle Outlook-Aktivitätsniveau zu bestimmen?
- 25. Gibt es eine Möglichkeit, das in Angular berührte $ zurückzusetzen?
- 26. Gibt es eine Möglichkeit, das JavaScript-Attribut standardmäßig zu verwenden?
- 27. Gibt es eine sichere Möglichkeit, das Java JDK herunterzuladen?
- 28. Gibt es eine Möglichkeit, das Tomcat-Servlet-Arbeitsverzeichnis zu konfigurieren?
- 29. Gibt es eine Möglichkeit, das Blockieren von StringIO zu blockieren
- 30. Gibt es eine Möglichkeit, das erforderliche Attribut für text_field_tag festzulegen?
Wenn ich eine Anwendung gesehen habe, würde ich denken, dass sie zwischen Highlight und Unhighlight hängt oder zumindest nicht die Standard-Event-Schleife verwendet. Wenn Sie angeben möchten, dass Ihr Fenster sichtbar ist, sollten Sie das Symbol Ihres Elements ändern. –