2009-12-15 15 views
19

Ho un processo in background che fa una finestra trasparente viene visualizzato quando si preme un tasto di scelta rapida:Come fare programmazione applicazione Cocoa attiva

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

... la finestra si presenta bene & di fronte all'altro Windows (come voglio), tuttavia fino a quando non faccio clic manualmente sulla finestra qualsiasi applicazione era attiva quando la finestra appare rimane attiva. Mi aspettavo che "makeKeyAndOrderFront" rendesse l'applicazione attiva, tuttavia aggiungendo una riga NSLog al mio -applicationWillBecomeActive mostra che non riceve alcuna notifica attiva finché non viene eseguito il clic del mouse.

Qualcuno sa come posso impostare la mia applicazione attiva @ nello stesso momento in cui rilascio -makeKeyAndOrderFront? Ne ho bisogno attivo in modo che possa iniziare ad accettare input da tastiera - qualsiasi assistenza necessaria :-)

+2

Non fare questo - applicazioni Mac non generalmente rubare attenzione per una buona ragione. – AlBlue

+6

Ma in questo caso, ci si aspetta che l'attenzione sia nella sua app perché l'utente ha usato il tasto di scelta rapida. – dreamlax

risposta

47

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

+2

* GRAZIE !!! * - Mi stavo strappando i capelli provando cose con NSRunningApplication -activateWithOptions, ma tutto ciò che ho provato è risultato in un pallone da spiaggia ... –

9

Per 10.6 o superiore

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

miglior posto per mettere questo? 'applicationDidFinishLaunching'? –

+0

Grazie per questa risposta. Ho un'app multi-finestra che non si attiva correttamente a meno che non sia stato impostato 'NSApplicationActivateAllWindows'. – thomasfuchs

Problemi correlati