如果窗口不可见,则 NSMenu 中的视图不可点击

问题描述

我在“应用程序是代理”-应用程序中使用 NSMenu 时遇到了非常奇怪的行为。

我有以下简单的代码来设置带有 NSMenu 的标题栏图标。该菜单包含一个带有 NSSwitch 按钮的自定义视图。

class AppDelegate: NSObject,NSApplicationDelegate {
    
   let statusBarItem = NsstatusBar.system.statusItem(withLength: -1)
    


    func applicationDidFinishLaunching(_ aNotification: Notification) {
        
        let icon = NSImage(imageLiteralResourceName:"flag")
        statusBarItem.image = icon
        
        let menu: NSMenu = NSMenu()
        var menuItem = NSMenuItem()
        
        let frame = CGRect(origin: .zero,size: CGSize(width: 100,height: 20))
        let viewHint = NSView(frame: frame)
        
        let switchButton = NSSwitch(frame: frame)
        viewHint.addSubview(switchButton)
        
        
        menuItem.view = viewHint
        
        menu.addItem(menuItem)
        
        statusBarItem.menu=menu
        
    }

只要应用程序窗口聚焦,它就可以很好地工作。

当我关闭应用程序主窗口时,标题栏仍然可见(因为它是一个代理应用程序)。现在菜单中的开关按钮不再响应,这意味着我无法打开或关闭它。如果双击它真的很快,你可以,但这不再是正常的行为,它与隐藏的窗口有某种关系。正如我所说,如果窗口可见,它就可以工作。

有什么想法吗?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...