Angenommen, der Nutzer befindet sich derzeit in Chrome. Also habe ich eine HUD, die von einem globalen Hotkey aufgerufen wird, der Benutzer tippt etwas hinein und wenn man auf Close oder OK klickt, verschwindet die HUD (nur mit [NSPanel orderOut:]), aber meine Anwendung ist immer noch fokussiert (dh das Menü Balken meiner Anwendung ist noch sichtbar). Aber ich möchte, dass der Fokus auf der ursprünglichen Anwendung Chrome liegt. Wie erreiche ich so etwas? Im Idealfall wäre ich auch nicht in der Lage, mich auf meine Anwendung zu konzentrieren. Daher würde die HUD-Eingabe immer stattfinden, während Chrome immer noch die fokussierte Anwendung war. Things.app schafft es, so etwas zu erreichen. Quicksilver macht das auch.Wie kann ich den Fokus auf die vorherige Anwendung in Cocoa übertragen?
Antwort
Wenn dies die einzige Benutzeroberfläche ist, die Ihre Anwendung zu bieten hat, können Sie ihr einen LSUIElement
Info.plist-Schlüssel geben, der verhindert, dass sie sich im Dock befindet oder die aktive Anwendung ist.
Sie können entweder eine gesichtslose Helfer-App haben, die dies für Sie erledigt, oder Sie erhalten die PSN des vordersten Prozesses, bevor Sie weitergeleitet werden, und wechseln zurück, wenn Sie weggehen möchten.
gehen Sie mit dem ersten, wenn möglich, weniger anfällig für Fehler – cobbal
Anruf [NSApp hide:]
, die Ihre Anwendung verstecken und aktivieren Sie die zuvor aktive Anwendung.
Dies ist nicht wahr, wenn Ihre App ein Vollbild-Fenster hat. – George
Um nie den Fokus auf Ihre Anwendung zu erhalten, rufen Sie [panel setStyleMask:[panel styleMask] | NSNonactivatingPanelMask];
auf Ihrem NSPanel oder das Kontrollkästchen nicht aktivierenden Kontrollkästchen auf Ihrem NSPanel in Interface Builder.
- 1. Cocoa einen Fokus auf meine Anwendung
- 2. Wie kann ich überprüfen, ob meine Anwendung den Fokus hat?
- 3. Android-Telefonie-Anwendung, die den Fokus auf eingehende Anrufe hält
- 4. Zugriff auf den Controller in einer Cocoa-Anwendung
- 5. Wie kann ich XCode auf die vorherige Version herunterstufen?
- 6. Wie kann ich den Tastaturstatus erfassen, wenn meine Anwendung nicht den Fokus hat?
- 7. Wie kann ich den Fokus auf den ausgewählten Text halten, wenn ich auf eine Schaltfläche klicke?
- 8. Wie kann ich feststellen, welche TextBox zuletzt den Fokus hatte?
- 9. Wie verfolge ich die Anwendung Z-Reihenfolge/Fokus?
- 10. OSX Cocoa: Wie überprüft man, welches Fenster im Fokus ist?
- 11. WPF: Ich kann den Fokus nicht setzen
- 12. Wie kann ich den Fokus in Slick Schieberegler deaktivieren
- 13. Wie kann ich den Anfangswert der Gliederung wiederherstellen für: Fokus?
- 14. Setzen Sie den Systemfokus auf meine Anwendung
- 15. Wie kann eine Winforms-Anwendung Benutzereingaben akzeptieren, ohne den Fokus zu haben?
- 16. Wie kann ich die vorherige Woche in Python bekommen?
- 17. Wie kann ich die vorherige URL in AngularJS
- 18. Wie teste ich, wie Kunden meine Cocoa-Anwendung verwenden?
- 19. Wie kann ich Zeitintervalle in Cocoa formatieren?
- 20. Wie wechsle ich Ansichten in einer Cocoa-Anwendung?
- 21. Wie ändere ich den Fokus in X-Windows?
- 22. C#: Erkennen, welche Anwendung den Fokus hat
- 23. Wie implementiere ich ein Meldungsfeld in einer Cocoa-Anwendung?
- 24. Wie kann auf die vorherige aktualisierte_at zugegriffen werden?
- 25. Wie kann Live-Video von einer Java-Anwendung übertragen werden?
- 26. Setzen Sie den Fokus in einer Android-Anwendung
- 27. Wie wird die Skriptbibliothek auf den CI-Controller übertragen?
- 28. WPF-Anwendung Fokus stehlen
- 29. Wie kann ich meiner Cocoa-Anwendung mitteilen, dass sie innerhalb der Anwendung selbst beendet werden soll?
- 30. Kann ich ein Live-Foto in den iOS Simulator übertragen?
Nein, ich habe ein anderes Fenster, das angezeigt wird, wenn Sie die Anwendung verwenden. Und dieses Fenster verhält sich wie jedes normale Anwendungsfenster, so dass ich LSUIElement nicht verwenden kann. – user220582
Warum nicht? Es scheint, als ob Sie wollen. –
Nein, ich möchte ein Dock-Symbol für meine Anwendung. – user220582