难以处理右键单击菜单栏图标,导致无效

时间:2019-04-13 15:16:55

标签: swift macos cocoa

当您单击应用程序的菜单栏图标时,我正在使用此代码打开菜单

当我右键单击菜单栏中的我的应用程序图标,然后单击菜单栏时 它恢复为零,并崩溃了我的应用程序 有没有更清洁的方法来处理我的右键菜单中的左右键?

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)}

    }
  }

0 个答案:

没有答案