让NSWindow成为前沿但不是焦点

red*_*nce 15 macos cocoa objective-c

我想在所有其他窗户前面带一个新的NSWindow,但没有把它放在焦点上.

我可以将它显示在前面,重点如下:

NSApplication *thisApp = [NSApplication sharedApplication];
[thisApp activateIgnoringOtherApps:YES];

[self makeKeyAndOrderFront:self];

有关如何使其显示在顶部但不关注其他应用程序的任何线索?

cob*_*bal 15

而不是makeKeyAndOrderFront:,尝试只是orderFront:(文档)


NSG*_*God 6

尝试这样的事情:

[window setLevel:NSScreenSaverWindowLevel + 1];
[window orderFront:nil];
Run Code Online (Sandbox Code Playgroud)

这将显示其他应用程序窗口上方的窗口,但不会激活它.如果应用程序B是活动应用程序,则应用程序A的窗口中具有正常窗口级别的窗口不能显示在应用程序B的窗口前面.(这是有充分理由的,顺便说一句).

请谨慎使用此方法.在许多情况下,它可能会违反人机界面指南.如果误用,它可能会让用户失望.(例如,在我刚刚进行的测试中,窗口看起来直接放在我碰巧在Safari中看到的位置.事实上,这是在我正在做的事情的方式,但是大胆不能成为关键,让它变得更加刺激.如果它在我的屏幕的一个角落里,它可能是一个不同的故事).