Как программно сделать приложение какао активным

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

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

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

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

3 ответа

Решение

Смотреть на [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];,

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

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

Swift 4.2+ от @Arvin ответа

NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])
Другие вопросы по тегам