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

时间:2014-05-29 22:43:57

标签: 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];

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

1 个答案:

答案 0 :(得分:7)

没有内置的支持。您可以考虑将窗口设置为在停用时隐藏。

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