【问题标题】:Is there a way to get NSPanel “Non activating” style functionality on an NSWindow?有没有办法在 NSWindow 上获得 NSPanel “非激活”样式功能?
【发布时间】:2016-06-12 12:58:21
【问题描述】:

NSPanel 有一个用于 HUD 面板的“非激活”选项。我希望在NSWindow 上使用相同的功能,即我希望窗口接受点击但不将焦点从任何活动应用程序上移开(我的意思是在单击窗口之前处于活动状态的应用程序激活了我的应用——在本例中为 Sketch)。

我已经尝试创建一个NSWindow 子类并将canBecomeMainWindowcanBecomeKeyWindow 设置为NO,但这似乎不起作用——我认为因为这些设置仅适用于相同的窗口应用程序

我在这里要做的是阻止this flickering。我很确定这是可行的,因为像 Alfred 这样的应用似乎正在这样做。

【问题讨论】:

  • 嗨,Elliot,欢迎来到 SO。当您提出问题时,请尝试插入 sn-ps 代码来演示您所做的事情以及问题所在。这将吸引更多用户详细研究您的问题并为您提供答案。
  • 为什么不使用NSPanel?它一个窗口。您可以使用NSWindow 执行任何操作,也可以使用NSPanel 执行任何操作。有一些方法/属性会改变它们的默认行为,但你可以使用覆盖来改变它们。
  • @KenThomases 感谢肯的回复。我在使用 NSPanel 时遇到的问题是使整个窗口变亮而不是变暗,并尝试设置 NSWindowTitleHidden。在我的NSWindow 中,我有这些外观设置,然后将NSVisualEffectView 设置为亮:self.window.styleMask = self.window.styleMask | NSFullSizeContentViewWindowMask; self.window.titleVisibility = NSWindowTitleHidden; self.window.titlebarAppearsTransparent = YES;
  • 好点@Patrick,谢谢!
  • 我还没有测试过,但是如果您将面板的appearance 属性(它符合NSAppearanceCustomization 协议)设置为[NSAppearance appearanceNamed:NSAppearanceNameVibrantLight],我希望它应该可以工作。

标签: macos cocoa nswindow


【解决方案1】:

如果其他人遇到此问题,虽然不是该问题的确切答案,但您确实可以通过向视图控制器添加 NSVisualEffectView 并将其设置为点亮来使 NSPanel 点亮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多