Tengo un NSWindow
transparente que sigue la pantalla del usuario a donde quiera que vaya (el NSWindow
se queda en frente de cada aplicación, sin importar qué, incluso las aplicaciones de pantalla completa).
En ese NSWindow
tengo un evento mouseDown
que muestra una ventana emergente. Digamos que estoy en safari en modo de pantalla completa y tengo mi ventana al frente, hago clic en safari y vuelvo a hacer clic en mi ventana: no pasa nada, el mouseDown no ocurre. Tengo que volver a hacer clic para que se active el evento mouseDown
.
¿Cómo puedo forzar que mi NSWindow
esté siempre activo, así que no tengo que hacer clic 2 veces para activar el mouseDown
cuando hago clic en una aplicación en segundo plano y vuelvo a hacer clic en mi ventana?
¡Gracias!¿Cómo forzar a NSWindow a estar siempre activo/enfocado?
Respuesta
Si agrega una instancia de NSButton sin bordes a la vista de su ventana y configura su imagen como la del botón (y como su imagen alternativa, para hacerlo más hermoso), funcionará de la caja: Simplemente conecte la acción del botón método para su delegado de aplicación (o el objeto donde desea procesar la acción de clic). Un clic en la imagen (es decir, el botón) activará el método de acción del botón, sin importar qué ventana esté activa.
¡gracias! ¡eso funciona como yo quería! tan simple y no me di cuenta. –
no estoy seguro si esto es exactamente lo que quiere (no es exactamente una ventana de ajuste de ancho), pero, desde el documentation:
Por defecto, un evento de ratón hacia abajo en una ventana que no es la ventana clave , simplemente lleva la ventana hacia adelante y la convierte en clave; el evento no es enviado al objeto
NSView
sobre el que se produce el clic del mouse. ElNSView
puede reclamar un evento inicial de mouse, sin embargo, anulandoacceptsFirstMouse:
para devolverYES
.El argumento de este método es el caso ratón hacia abajo que se produjo en la ventana que no son clave, que el objeto vista puede examinar para determinar si desea recibir el evento de ratón y potencialmente convertirse primero en responder. Desea el comportamiento predeterminado de de este método en, por ejemplo, un control que afecta al objeto seleccionado en una ventana.
Sin embargo, en ciertos casos es adecuada para invalidar este comportamiento, tales como los controles que deben recibir
mouseDown:
mensajes incluso cuando la ventana está inactiva. Los ejemplos de controles que admiten este comportamiento de clic son los botones de la barra de título de una ventana.
o usted podría intentar tocar el violín con
- (void)sendEvent:(NSEvent *)theEvent
y ver si se puede manejar eventos de una manera personalizada.
Investigué un poco en la documentación pero no pude encontrar nada que funcionara:/ –
¿Has intentado hacer -acceptsFirstMouse: return SÍ? Eso haría que los controles se puedan utilizar inmediatamente en su ventana, incluso si no es la clave, que suena como lo que quiere. – Vervious
nop, no funciona como quiero. quiero que la ventana esté activa/enfocada todo el tiempo. –
Creo que lo que realmente debe hacer es usar un NSPanel (una paleta flotante - un tipo especial de NSWindow) que hará exactamente lo que usted quiere de una manera consistente con el SO en lugar de tratar de combatir el comportamiento previsto.
Aquí está la documentación NSPanel:
Y aquí hay algo de información útil y concisa:
http://cocoadev.com/wiki/NSPanel
Por defecto, un NSPanel desaparecerá cuando la aplicación está inactiva, pero puede apagar esto
Pido disculpas por no haberlo expuesto más completamente ... presionado por el tiempo.
Editar:
Tenga en cuenta que es probable que pueda obtener su ventana se comporte como se desea simplemente:
"El NSView puede reclamar un evento inicial del ratón hacia abajo, sin embargo, por razones imperiosas acceptsFirstMouse: volver SÍ. "
Tendrá que hacer esto con cualquier subclase NSView omitir la "activación clic".
se comporta como la ventana ns. tengo que tocarlo dos veces para enfocarme después de hacer clic en una ventana de fondo:/ –
Ese es el comportamiento predeterminado que debes anular. Si observa el visor de caracteres del sistema, un NSPanel, acepta el primer clic y permanece al frente. Consulte los documentos aquí: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingMouseEvents/HandlingMouseEvents.html – podperson
Esto funcionó para mí, la esperanza de que será útil, esto mantendrá su ventana siempre encima de todas las aplicaciones
[self.window makeKeyAndOrderFront:nil];
[self.window setLevel:NSStatusWindowLevel];
- 1. ¿Cómo forzar a NSWindow a estar frente a cada aplicación? Incluso las aplicaciones de pantalla completa
- 2. ¿Cómo forzar a XCode 4 a actualizar siempre los recursos?
- 3. ¿Cómo forzar a ASP.NET Web API a devolver siempre JSON?
- 4. ¿Cómo forzar a Kaminari a incluir siempre param de página?
- 5. ¿Puedes forzar a MSI a ser siempre administrador?
- 6. ¿Cómo forzar a un número a estar en un rango en C#?
- 7. Puntero a NSWindow Xib después de cargarlo?
- 8. Cómo forzar a Boost a usar rpath?
- 9. ¿Cómo forzar a XPath a usar UTF8?
- 10. Otorgue a NSWindow una imagen de fondo
- 11. ¿Cómo puedo forzar a Rails a cargar todos los modelos?
- 12. ¿Hay alguna manera de forzar a un before_filter a ejecutar siempre el último?
- 13. ¿Cómo agregar un NSView a NSWindow en una aplicación Cocoa?
- 14. cómo forzar a google a volver a indexar una página
- 15. Cómo forzar a Xcode a volver a vincular
- 16. ¿Cómo decirle a NHibernate que siempre debe forzar los identificadores entrecomillados?
- 17. Cómo forzar al programa a ejecutar siempre la primera iteración de un ciclo while?
- 18. Obtener NSWindow desde kCGWindowNumber
- 19. cómo forzar IntelliJ para buscar siempre en el "Proyecto conjunto"
- 20. Cómo forzar a eliminar un archivo?
- 21. Cómo forzar una prueba RSpec a fallar?
- 22. Cómo forzar MVC a validar el IValidatableObject
- 23. Cómo forzar IE a recargar javascript?
- 24. ¿Cómo forzar al teclado a mostrar/ocultar?
- 25. ¿Cómo forzar a las animaciones de jQuery a ejecutarse simultáneamente?
- 26. Cómo forzar al rastreador a volver a indexar una carpeta?
- 27. Cómo forzar a un método a ser anulado en Java?
- 28. ¿Cómo puedo forzar a IIS 7 a enjuagar la salida?
- 29. ¿Cómo forzar a Java a lanzar una excepción aritmética?
- 30. ¿Cómo puedo forzar a un ContextMenu a cerrar (proyecto WPF)?
Sírvanse explicar con detalle en la transparencia de la ventana: no es totalmente transparente, es ¿eso? – Tim
completamente transparente con una imagen –