如何为NSStatusBarButton注册点击操作?

时间:2018-04-18 21:11:46

标签: swift cocoa

我的菜单工作得很好我只想在点击更新其中的信息时收到通知。但是,当我单击状态栏按钮时,我的statusBarButtonClicked函数永远不会被触发。如何向其发送点击事件?

@IBOutlet weak var statusMenu: NSMenu!

let log = SwiftyBeaver.self

let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)

override func awakeFromNib() {
    statusItem.menu = statusMenu

    if let button = statusItem.button {
        button.target = self
        button.action = #selector(self.statusBarButtonClicked(sender:))
        button.sendAction(on: NSEvent.EventTypeMask.leftMouseUp)
    }
}

@objc func statusBarButtonClicked(sender: NSStatusBarButton) {
    log.info("Status menu clicked")
}

1 个答案:

答案 0 :(得分:0)

如果设置了菜单,显然该操作不起作用。设置菜单的委托并实现NSMenuDelegate方法

func menuNeedsUpdate(_ menu: NSMenu)