【发布时间】:2016-06-12 12:58:21
【问题描述】:
NSPanel 有一个用于 HUD 面板的“非激活”选项。我希望在NSWindow 上使用相同的功能,即我希望窗口接受点击但不将焦点从任何活动应用程序上移开(我的意思是在单击窗口之前处于活动状态的应用程序激活了我的应用——在本例中为 Sketch)。
我已经尝试创建一个NSWindow 子类并将canBecomeMainWindow 和canBecomeKeyWindow 设置为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],我希望它应该可以工作。