我有一个statusBarItem,我想用它来显示NSColorPanel。

当按钮被点击时,将调用以下代码,这将激活ColorPanel。
@IBAction func showColour( button:NSButton ){
DispatchQueue.main.async {
NSApplication.shared.orderFrontColorPanel(self)
print( "panel frame:\(NSColorPanel.shared.frame), is visible:\(NSColorPanel.shared.isVisible )" )
}
}如果用户按下关闭按钮关闭彩色面板,点击按钮显示面板正常工作,并再次显示面板。但是,如果用户在空空间中单击,colorPanel就消失了,点击按钮重新打开面板就不能再工作了。但是,根据日志,面板似乎有一个有效的rect,并且是可见的。
有什么建议吗?
谢谢
雷扎
发布于 2022-06-20 18:01:59
正如Reddit上的一位用户所指出的那样,当点击空空间时,应用程序将转到后台,不再是前台应用程序,因此不会显示像彩色面板这样的实用程序样式的窗口。因此,由于应用程序是不活动的,随后点击显示彩色面板,将不会把实用程序窗口到前面。
因此,解决方案是在尝试打开彩色面板之前确保应用程序处于活动状态,方法是调用:
NSApplication.shared.activate(ignoringOtherApps: true )在showColour函数中
https://stackoverflow.com/questions/72688402
复制相似问题