Я использую этот код, чтобы открыть меню, когда вы нажимаете на значок меню для приложения,
, когда я щелкаю правой кнопкой мыши по значку моего приложения в меню и затем нажимаю на меню, которое возвращается, как ноль.и сбой моего приложения есть ли более чистый способ обрабатывать левый и правый щелчок моего правого меню?
statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)
let menuBarMenuIcon = statusItem?.button; menuBarMenuIcon!.image = NSImage(named: "MenuBarButton"); menuBarMenuIcon!.target = self; menuBarMenuIcon!.action = #selector(displayMenuBarIconMenu); menuBarMenuIcon?.sendAction(on: [.leftMouseUp,.rightMouseUp])
@objc func displayMenuBarIconMenu() {
guard let button = statusItem?.button else { return }
let x = button.frame.origin.x
let y = button.frame.origin.y - 4
let location = button.superview!.convert(NSMakePoint(x, y), to: nil)
let w = button.window!
let event = NSEvent.mouseEvent(with: .leftMouseUp, location: location, modifierFlags: NSEvent.ModifierFlags(rawValue: 0), timestamp: 0, windowNumber: w.windowNumber, context: nil, eventNumber: 0, clickCount: 1, pressure: 0)!
if NSApplication.shared.currentEvent!.description.contains("RMouseUp"){NSMenu.popUpContextMenu(menuBarIconMenu, with: event, for: button)}
if NSApplication.shared.currentEvent!.description.contains("LMouseUp"){NSMenu.popUpContextMenu(menuBarIconMenu, with: event, for: button)}
}
}