首页 文章

菜单栏额外没有左键单击打开

提问于
浏览
0

我有一个应用程序,在macOS的菜单栏上显示自定义视图 . 单击自定义视图时,我想显示上下文菜单(NSMenu) .

我的代码如下所示:

private let statusItem = NSStatusBar.system() . statusItem(withLength:NSVariableStatusItemLength)private var timer:Timer? private var view:MenuView!私人var菜单:NSMenu! private let popover = NSPopover()private var popoverController:PopoverViewController?

func applicationDidFinishLaunching(_ aNotification: Notification)
{
    self.view = createView()
    self.statusItem.view = self.view

    self.menu = NSMenu()
    self.menu.addItem(NSMenuItem(title: "Quit", action: nil, keyEquivalent: ""))
    self.statusItem.menu = self.menu

    self.statusItem.menu = menu
}

但是,当我单击视图时,菜单没有像我期望的那样显示(好吧,根本没有显示) . 当我不使用自定义视图并仅设置图像时,单击它时会打开上下文菜单 . 使用自定义视图时如何显示菜单?

此致,Sascha

1 回答

  • 1

    如果您使用自定义视图,则您有责任处理所有事件,绘图和突出显示 .

    在视图的 init(frame: )方法中传递 NSStatusBar 实例 . 将菜单分配给视图而不是 statusItem .

    至少你必须覆盖 mouseDown

    override func mouseDown(with theEvent: NSEvent) {
        statusItem.popUpMenu(menu!)
        needsDisplay = true
    }
    

相关问题