2009-12-15 10 views
19

Tengo un proceso de fondo que hace aparecer una ventana transparente cuando se pulsa una tecla de acceso directo:Cómo hacer mediante programación de aplicaciones de cacao activa

[window makeKeyAndOrderFront:nil]; 
[[content animator] setAlphaValue:1.0]; // alpha was 0.0 

... la ventana aparece bien & frente a la otra Windows (como yo quiera), sin embargo, hasta que haga clic manualmente en la ventana, la aplicación que estaba activa cuando la ventana aparece permanece activa. Esperaba que 'makeKeyAndOrderFront' también activara la aplicación, sin embargo, al agregar una línea NSLog a mi -applicationWillBecomeActive, se muestra que no recibe ninguna notificación activa hasta que se hace clic en el mouse.

¿Alguien sabe cómo puedo configurar mi aplicación activa @ al mismo tiempo que ejecuto -makeKeyAndOrderFront? Lo necesito activo para que pueda comenzar a aceptar la entrada del teclado, necesita ayuda :-)

+2

No hacer esto - aplicaciones de Mac no generalmente roban el foco por una buena razón. – AlBlue

+6

Pero en este caso, se espera que el foco esté en su aplicación porque el usuario ha utilizado la tecla de acceso directo. – dreamlax

Respuesta

47

Mire [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];.

+2

* GRACIAS !!! * - Me estaba tirando de los pelos intentando cosas con NSRunningApplication's activate, withType, pero todo lo que probé resultó en una pelota de playa ... –

9

Para 10.6 o mayor

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)]; 
+0

¿el mejor lugar para poner esto? 'applicationDidFinishLaunching'? –

+0

Gracias por esta respuesta. Tengo una aplicación de varias ventanas que no se activaría correctamente a menos que se haya configurado 'NSApplicationActivateAllWindows'. – thomasfuchs

Cuestiones relacionadas