【问题标题】:Creating an NSWindow that floats over all other windows in the app but not over windows from other apps创建一个 NSWindow 浮动在应用程序中的所有其他窗口上,但不在其他应用程序的窗口上
【发布时间】:2014-07-19 14:25:45
【问题描述】:

我试图让我的 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 浮动在我的其他窗口上,但不是其他活动应用程序的其他窗口。这不可能吗?

【问题讨论】:

  • 听起来像是一个经典的工具箱/调色板用例,您可以在其中设置您希望在应用不活动时消失的窗口的 hidesOnDeactivate 属性

标签: cocoa nswindow


【解决方案1】:

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

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

【讨论】:

  • 这应该是真正的答案。感谢您发帖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 2015-03-15
  • 2023-03-09
  • 2023-02-06
相关资源
最近更新 更多