2009-12-15 12 views
19

Ich habe programmatisch einen Hintergrundprozess machen, die ein transparentes Fenster erscheinen lässt, wenn ein Hotkey gedrückt wird:Wie Kakao Anwendung aktiv

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

... das Fenster fein & vor dem anderen auftaucht Fenster (wie ich es will), aber bis ich manuell auf das Fenster klicken, welche Anwendung aktiv war, wenn das Fenster erscheint, bleibt aktiv. Ich habe erwartet, dass 'makeKeyAndOrderFront' die Anwendung ebenfalls aktiv macht, aber das Hinzufügen einer NSLog-Zeile zu meinem -applicationWillBecomeActive zeigt, dass es keine aktive Benachrichtigung erhält, bis der Mausklick ausgeführt wird.

Weiß jemand, wie ich meine Anwendung aktiv @ zur gleichen Zeit stelle ich die -MakeKeyAndOrderFront? Ich brauche es aktiv, so dass es anfangen kann, Tastatureingabe zu akzeptieren - jede Hilfe benötigt :-)

+2

Tu das nicht - Mac-Anwendungen im Allgemeinen nicht stehlen Fokus aus gutem Grund. – AlBlue

+6

Aber in diesem Fall wird erwartet, dass der Fokus in seiner App liegt, da der Benutzer den Hotkey verwendet hat. – dreamlax

Antwort

47

Schauen Sie sich [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];.

+2

* DANKE !!! * - Ich zog mir die Haare aus und probierte Sachen mit NSRunningApplication -activateWithOptions, aber alles, was ich versuchte, resultierte in einem Strandball ... –

9

Für 10,6 oder mehr

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

der beste Ort, um dies zu setzen? 'applicationDidFinishLaunching'? –

+0

Danke für diese Antwort. Ich habe eine App mit mehreren Fenstern, die nicht korrekt aktiviert wird, wenn "NSApplicationActivateAllWindows" nicht festgelegt wurde. – thomasfuchs