Xcode / Swift:用鼠标右键打开Menubarapp-Menu

我想通过在菜单栏应用图标上单击鼠标左键来执行单独的命令。通过单击鼠标右键,应该显示菜单栏的菜单,而不是执行分开的命令。我已经拥有的代码看起来如何?

@IBOutlet weak var appMenu: NSMenu!

@objc func displayMenu() {

    guard let button = statusItem?.button else { return }
    let x = button.frame.origin.x
    let y = button.frame.origin.y - 5
    let location = button.superview!.convert(NSMakePoint(x,y),to: nil)
    let w = button.window!
    let event = NSEvent.mouseEvent(with: .leftMouseDown,location: location,modifierflags: NSEvent.Modifierflags(rawValue: 0),timestamp: 0,windowNumber: w.windowNumber,context: w.graphicsContext,eventNumber: 0,clickCount: 1,pressure: 0)!
    NSMenu.popUpContextMenu(appMenu,with: event,for: button)
}

func applicationDidFinishlaunching(_ aNotification: Notification) {

    statusItem = NSStatusBar.system.statusItem(withLength: -1)

    guard let button = statusItem?.button else {
        print("status bar item failed. Try removing some menu bar item.")
        NSApp.terminate(nil)
        return
    }

    button.image = NSImage(named: "MenuBarButton")
    button.target = self
    button.action = #selector(self.detect_mouse_button(sender:))
    button.sendaction(on: [.leftMouseUp,.rightMouseUp])

}

@objc func detect_mouse_button(sender: NSStatusItem) {

    let event = NSApp.currentEvent!

    if event.type == NSEvent.EventType.rightMouseUp{
        self.displayMenu()
    } else {
        let sUrl = "https://www.google.de"
        NSWorkspace.shared.open(NSURL(string: sUrl)! as URL)
    }
}
meng0550 回答:Xcode / Swift:用鼠标右键打开Menubarapp-Menu

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3166744.html

大家都在问