Tengo un NSWindow
que me gustaría tenerlo en frente de todo (todas las aplicaciones de la computadora, aplicaciones de pantalla completa, etc.). Incluso si hago clic en una aplicación de fondo, el NSWindow
no puede pasar a segundo plano. Y el NSWindow
debe seguir la pantalla del usuario si, por ejemplo, el usuario cambia el escritorio a escritorio2, y así sucesivamente ... ¿Cómo puedo hacer eso?
Gracias!¿Cómo forzar a NSWindow a estar frente a cada aplicación? Incluso las aplicaciones de pantalla completa
Respuesta
Si no necesita ser visible con las ventanas de pantalla completa de otras aplicaciones, no es demasiado difícil.
Primero, para permanecer al frente de todo lo demás, simplemente configureLevel: con NSFloatingWindowLevel o superior. Experimenta con los diferentes valores para ver lo que parece apropiado para tus necesidades.
A continuación, para mantenerse al frente incluso cuando el usuario cambie Espacios, incluyendo posiblemente Exposé/Mission Control, setCollectionBehavior: con el par de banderas apropiado, o use los espacios correspondientes y la configuración Exposé en el Inspector de Atributos si está creando la ventana en la punta. O bien, puede unirse a todos los espacios o moverse a Active Space se asegurará de que permanezca visible en cada espacio, de maneras ligeramente diferentes. Probablemente querrá Exposé configurado en estacionario, o posiblemente también transitorio. De nuevo, prueba las dos formas y mira.
Sin embargo, Lion ocultará ventanas de todos los espacios y de movimiento a espacio activo cuando el usuario cambie a un espacio de pantalla completa o al Panel o Launchpad. Y si observas, verás que lo hace de diferentes maneras para cada uno de los tres casos. Y ese Snow Leopard hace las cosas un poco diferente, y también lo hace Mountain Lion.
Si quiere resolver ese último problema, necesita un poco de hackers y diferentes formas de piratería para cada caso y para cada versión del sistema operativo. El truco básico es atrapar las notificaciones relacionadas con la piel y mostrarse en el momento apropiado.
Debe modificar su info.plist y establecer el indicador de Aplicación es agente en SÍ. La ventana de un agente se puede mostrar frente a las ventanas de pantalla completa.
- 1. ¿Cómo forzar a NSWindow a estar siempre activo/enfocado?
- 2. ¿Cómo crear una aplicación web html 5 a pantalla completa?
- 3. ¿Cómo saber si una NSWindow es a pantalla completa en Mac OS X Lion?
- 4. menú de la aplicación comportamiento frente a los espacios de aplicaciones de pantalla completa (Mac OS 10.7/león)
- 5. Forzar pantalla completa en Chrome
- 6. ¿Cómo hacer que una Mac OSX Cocoa aplicación a pantalla completa?
- 7. iOS a pantalla completa ¿La aplicación web arroja cookies?
- 8. Cómo hacer que mi aplicación se mantenga al tanto de las aplicaciones de pantalla completa
- 9. Cambiar ventana de estado a pantalla completa
- 10. ¿Cómo forzar a las animaciones de jQuery a ejecutarse simultáneamente?
- 11. Ajuste de pantalla completa a cabo onCreate
- 12. Pantalla completa C# Aplicación
- 13. ¿Cómo forzar a un número a estar en un rango en C#?
- 14. Las aplicaciones de pantalla completa siguen cambiando de lugar
- 15. Qt Widget temporalmente a pantalla completa
- 16. ¿Forzar Chrome/Firefox en pantalla completa?
- 17. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 18. ¿Cómo agregar un NSView a NSWindow en una aplicación Cocoa?
- 19. Android - obligar a pantalla completa teclado de software
- 20. Cómo forzar a mi aplicación ASP.net 2.0 a recompilar
- 21. Media = Todos frente a Media = Pantalla
- 22. Complemento de servidor Eclipse: publicación completa frente a publicación incremental
- 23. ¿Cómo funciona Facebook a pantalla completa con javascript?
- 24. ¿Cómo hacer un JFrame realmente a pantalla completa?
- 25. Iconos de Android: pantalla de inicio frente a menú de aplicaciones
- 26. Seguridad de Tomcat frente a WebSphere frente a WebLogic
- 27. Cómo forzar a Boost a usar rpath?
- 28. ¿Cómo mostrar una ventana de TYPE_SYSTEM_ALERT a pantalla completa?
- 29. Enviando pantalla completa, desapareciendo SMS a un iPhone
- 30. jquery frente a $ (esto) y tal vez incluso $ this
¡Muchas gracias! Establecí el nivel en NSFloatingWindowLevel, Spaces: se puede unir a todos los espacios y Exposé: Transient Behavior y funciona como yo quería. NSWindow me sigue a todos lados. ¡Gracias! –
Una última reflexión: puede ser más apropiado utilizar un NSPanel en lugar de una NSWindow (y posiblemente utilizar setFloatingPanel: YES en lugar de setLevel: NSFloatingWindowLevel). – abarnert