创建一个NSWindow,它漂浮在应用程序中的所有其他窗口上,但不会覆盖其他应用程序的窗口

Mik*_*012 5 cocoa nswindow

我试图让我的NSWindow总是出现在我的应用程序的顶部,但我不希望它漂浮在已经变得活跃的其他应用程序上.我已经厌倦了以下代码,但这使得窗口浮动在其他应用程序上:

NSRect frame = NSMakeRect(100, 100, 800, 800);
myWindow  = [[NSWindow alloc] initWithContentRect:frame
                                                styleMask:NSBorderlessWindowMask
                                                  backing:NSBackingStoreBuffered
                                                    defer:NO];
[myWindow setLevel:NSFloatingWindowLevel  ];
[myWindow setBackgroundColor:[NSColor blueColor]];
[myWindow makeKeyAndOrderFront:NSApp];
Run Code Online (Sandbox Code Playgroud)

我还尝试了NSWindow文档中列出的所有常量,并没有找到一个会让NSWindow浮动在其他窗口的其他窗口,而不是其他活动应用程序的其他窗口.这不可能吗?

Ken*_*ses 7

没有内置的支持.您可以考虑将窗口设置为在取消激活时隐藏.

或者,您可以让窗口控制器观察NSApplicationWillResignActiveNotificationNSApplicationDidBecomeActiveNotification通知并调整窗口级别.当您的应用即将重新启动活动状态时,您将窗口级别设置为恢复正常.当它再次变为活动状态时,将其设置为浮动.(如果窗口由app delegate控制,那么您可以在-applicationWillResignActive:-applicationDidBecomeActive:委托方法中执行此操作.)