Как программно сделать приложение какао активным - PullRequest
19 голосов
/ 15 декабря 2009

У меня есть фоновый процесс, который заставляет прозрачное окно появляться при нажатии горячей клавиши:

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

... окно отображается нормально и перед другими окнами (как я этого хочу), однако до тех пор, пока я вручную не нажму на окно, какое приложение было активным, когда оно появляется, остается активным. Я ожидал, что makeKeyAndOrderFront также сделает приложение активным, однако добавление строки NSLog в мой -applicationWillBecomeActive показывает, что он не получает никаких активных уведомлений, пока не будет выполнен щелчок мыши.

Кто-нибудь знает, как я могу активировать свое приложение в то же время, когда я запускаю -makeKeyAndOrderFront? Мне нужно, чтобы он был активным, чтобы он мог начать принимать ввод с клавиатуры - любая необходимая помощь: -)

Ответы [ 3 ]

48 голосов
/ 15 декабря 2009

Посмотрите на [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];.

10 голосов
/ 09 марта 2013

Для 10,6 или выше

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)];
1 голос
/ 12 февраля 2019

Swift 4.2 + из @Arvin answer

NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])
...