我正在尝试让我的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漂浮在其他窗口中而不是其他活动应用程序的其他窗口中。这不可能吗?
答案 0 :(得分:7)
没有内置的支持。您可以考虑将窗口设置为在停用时隐藏。
或者,您可以让窗口控制器观察NSApplicationWillResignActiveNotification
和NSApplicationDidBecomeActiveNotification
通知并调整窗口级别。当您的应用即将重新启动活动状态时,您将窗口级别设置为恢复正常。当它再次变为活动状态时,将其设置为浮动。 (如果窗口由app delegate控制,那么您可以使用-applicationWillResignActive:
和-applicationDidBecomeActive:
委托方法执行此操作。)