如何检测macOS状态栏应用程序右键单击?

时间:2019-12-30 09:03:24

标签: macos statusbar appkit menubar

我已经制作了菜单栏应用程序,并直接在菜单栏应用程序上搜索右键单击。

首先,如果AppDelegate执行基本功能,则AppDelegate将在viewDidLoad上运行此代码。

statusBar = NSStatusBar.init()
statusItem = statusBar.statusItem(withLength: 70.0)
statusBarButton = statusItem.button!

...(some unrelated code to post this question)...

statusBarButton.action = #selector(togglePopover(sender:))

然后togglePopover(sender:)

@objc func togglePopover(sender: AnyObject) {

    switch (NSApp.currentEvent!.type) {
    case .leftMouseUp:
        if(StatusBarController.popover.isShown) {

        hidePopover(sender)
        }
        else {

        showPopover(sender)
        }

    case .rightMouseUp:

        let quitAlert = NSAlert()
        quitAlert.messageText = "Quit"
        quitAlert.informativeText = "Do you want to quit this app?"

        quitAlert.addButton(withTitle: "Quit")
        quitAlert.buttons[0].target = self
        quitAlert.buttons[0].action = #selector(quitApp)

        quitAlert.addButton(withTitle: "Cancel")
        quitAlert.buttons[1].target = self

        quitAlert.showsSuppressionButton = true

        quitAlert.runModal()
    }
}

好的,让我发疯的问题是

  

case .rightMouseUp:

它根本不起作用,而

  

case .leftMouseUp:

正常工作:/

let quitAlert = NSAlert()(在该代码之后)不是问题,因为我已经检查过了。

警报代码正常工作。

那有什么问题...?

帮助我

0 个答案:

没有答案