如何以编程方式使cocoa应用程序活动

Dav*_*eto 21 macos cocoa objective-c nsapplication

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

[window makeKeyAndOrderFront:nil];
[[content animator] setAlphaValue:1.0]; // alpha was 0.0
Run Code Online (Sandbox Code Playgroud)

...窗口显示正常并在其他窗口前面(我想要它),但是直到我手动点击窗口,无论应用程序处于活动状态,当窗口出现时仍保持活动状态.我期待'makeKeyAndOrderFront'也可以使应用程序处于活动状态,但是在我的-applicationWillBecomeActive中添加NSLog行会显示在执行鼠标单击之前没有获得任何活动通知.

有没有人知道我如何设置我的应用程序@我同时发出-makeKeyAndOrderFront?我需要它激活,以便它可以开始接受键盘输入 - 需要任何帮助:-)

小智 49

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

  • *谢谢!!!* - 我正在尝试使用NSRunningApplication的-activateWithOptions尝试一些东西,但我尝试的所有内容都产生了一个沙滩球...... (2认同)

Arv*_*vin 11

10.6或更高

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)];
Run Code Online (Sandbox Code Playgroud)


Alf*_*lfi 6

@Arvin 的Swift 4.2+答案

NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])
Run Code Online (Sandbox Code Playgroud)

  • 这帮助我在 Xamarin MacOS `NSRunningApplication.CurrentApplication.Activate(NSApplicationActivationOptions.ActivateIgnoringOtherWindows);` 中找到我需要的内容 (2认同)