2009-12-25 13 views
7

Digamos que el usuario se encuentra actualmente en Chrome. Así que tengo un HUD invocado por una tecla de acceso rápido global, el usuario escribe algo en él y al hacer clic en Cerrar o en Aceptar, el HUD desaparece (solo usa [NSPanel orderOut:]) pero mi aplicación sigue enfocada (es decir, el Menú la barra de mi aplicación aún está visible). Pero quiero que el foco vuelva a la aplicación original, Chrome. ¿Cómo logro algo como esto? Idealmente, también podría nunca enfocar mi aplicación y, por lo tanto, la entrada de HUD sucedería mientras Chrome seguía siendo la aplicación enfocada. Things.app logra lograr algo como esto. Quicksilver también lo hace.¿Cómo cedo el enfoque a la aplicación anterior en Cocoa?

Respuesta

0

Si esta es la única interfaz de usuario que puede ofrecer su aplicación, puede proporcionarle una clave Info.plist LSUIElement, que evita que esté en el Dock o sea la aplicación activa.

+0

No, tengo una ventana diferente que aparece cuando usa la aplicación. Y esa ventana se comporta como cualquier ventana de aplicación normal, así que no puedo usar LSUIElement. – user220582

+0

¿Por qué no? Ciertamente parece lo que quieres. –

+0

No, quiero un ícono de dock para mi aplicación. – user220582

1

Puede tener una aplicación de ayuda anónima que hace esto por usted o obtener la PSN del proceso más avanzado antes de que se adelante y volver a ella cuando quiera irse.

+0

vaya con el primero si es posible, menos propenso al error – cobbal

7

llamada [NSApp hide:]

que ocultará su solicitud y activar la aplicación previamente activo.

+0

Esto no es así si su aplicación tiene una ventana de pantalla completa. – George

2

Con el fin de no obtener el foco en su llamada de aplicación [panel setStyleMask:[panel styleMask] | NSNonactivatingPanelMask]; en su NSPanel o compruebe la casilla de verificación para no Activación en su NSPanel en Interface Builder.

Cuestiones relacionadas