菜单栏 Extra 左键单击不打开
Menu Bar Extra not opening on left click
我有一个应用程序可以在 macOS 的菜单栏上显示自定义视图。单击自定义视图时,我想显示上下文菜单 (NSMenu)。
我的代码如下所示:
private let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
private var timer: Timer?
private var view: MenuView!
private var menu: 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
}
但是,当我单击视图时,菜单并没有像我期望的那样显示(好吧,它根本没有显示)。
当我不使用我的自定义视图而只设置一个图像时,当我单击它时上下文菜单打开。
使用自定义视图时如何显示菜单?
如果您使用自定义视图,您将负责处理所有事件、绘图和突出显示。
在视图的 init(frame:
) 方法中传递 NSStatusBar
实例。将菜单分配给视图而不是 statusItem
.
至少你得重写mouseDown
override func mouseDown(with theEvent: NSEvent) {
statusItem.popUpMenu(menu!)
needsDisplay = true
}
我有一个应用程序可以在 macOS 的菜单栏上显示自定义视图。单击自定义视图时,我想显示上下文菜单 (NSMenu)。
我的代码如下所示:
private let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
private var timer: Timer?
private var view: MenuView!
private var menu: 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
}
但是,当我单击视图时,菜单并没有像我期望的那样显示(好吧,它根本没有显示)。 当我不使用我的自定义视图而只设置一个图像时,当我单击它时上下文菜单打开。 使用自定义视图时如何显示菜单?
如果您使用自定义视图,您将负责处理所有事件、绘图和突出显示。
在视图的 init(frame:
) 方法中传递 NSStatusBar
实例。将菜单分配给视图而不是 statusItem
.
至少你得重写mouseDown
override func mouseDown(with theEvent: NSEvent) {
statusItem.popUpMenu(menu!)
needsDisplay = true
}