25

我有一个后台进程,当按下热键时会出现一个透明窗口:

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

...窗口在其他窗口的前面显示得很好(如我所愿),但是直到我手动单击窗口,当窗口出现时任何处于活动状态的应用程序都保持活动状态。我期待“makeKeyAndOrderFront”也可以使应用程序处于活动状态,但是在我的 -applicationWillBecomeActive 中添加一个 NSLog 行表明它在执行鼠标单击之前没有收到任何活动通知。

有谁知道如何在我发出 -makeKeyAndOrderFront 的同时设置我的应用程序处于活动状态?我需要它处于活动状态,以便它可以开始接受键盘输入 - 需要任何帮助 :-)

4

3 回答 3

54

[[NSApplication sharedApplication] activateIgnoringOtherApps : YES];

于 2009-12-15T01:30:23.130 回答
12

对于 10.6 或更高版本

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)];
于 2013-03-09T05:29:34.727 回答
6

@Arvin 的Swift 4.2+答案

NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])
于 2019-02-12T11:14:18.893 回答