2012-06-05 8 views

Antwort

9

Wenn Sie nicht mit den Vollbildfenstern anderer Anwendungen sichtbar sein müssen, ist es nicht schwer.

Erstens, um vor allem anderen zu bleiben, nur setLevel: mit NSFloatingWindowLevel oder höher. Experimentieren Sie mit den verschiedenen Werten, um zu sehen, welches für Ihre Bedürfnisse geeignet erscheint.

Als nächstes bleiben Sie in Front, auch wenn der Benutzer Spaces ändert, möglicherweise einschließlich Exposé/Mission Control, setCollectionBehavior: mit dem entsprechenden Flagpaar oder verwenden Sie die entsprechenden Spaces- und Exposé-Einstellungen im Attribute Inspector, wenn Sie erstellen das Fenster in der Feder. Mit "Alle Bereiche verbinden" oder "Zu aktivem Bereich wechseln" können Sie sicherstellen, dass Sie in jedem Bereich auf eine etwas andere Weise sichtbar bleiben. Wahrscheinlich möchten Sie, dass Exposé auf Stationär oder möglicherweise auch auf Transient gesetzt wird. Versuchen Sie wieder beide Wege und sehen Sie.

Lion wird jedoch sowohl All-Spaces als auch Fenster zum Verschieben in aktiven Space ausblenden, wenn der Benutzer zu einem Vollbildbereich oder Dashboard oder Launchpad wechselt. Und wenn Sie zusehen, werden Sie sehen, dass dies für jeden der drei Fälle auf unterschiedliche Weise geschieht. Und das macht Snow Leopard ein wenig anders und Mountain Lion.

Wenn Sie dieses letzte Problem lösen wollen, brauchen Sie ein wenig Hacker-und verschiedene Formen von Hacker für jeden Fall und für jede Betriebssystemversion. Der grundlegende Trick besteht darin, die versteckten Benachrichtigungen abzufangen und sich zur richtigen Zeit einzufangen.

+1

Vielen Dank! Ich habe den Level auf NSFloatingWindowLevel, Spaces: Can Join All Spaces und Exposé: Transient Behavior gesetzt und es funktioniert genau so, wie ich es wollte! der NSWindow folgt mir überall hin. Vielen Dank! –

+0

Ein letzter Gedanke: Es könnte geeigneter sein, einen NSPanel anstelle eines NSWindow zu verwenden (und möglicherweise setFloatingPanel zu verwenden: YES anstelle von setLevel: NSFloatingWindowLevel). – abarnert

4

Sie sollten Ihre info.plist ändern und das Flag "Application is Agent" auf YES setzen. Das Fenster eines Agenten kann vor Vollbildfenstern angezeigt werden.