问题描述
我正在使用以下代码在右键单击上显示状态栏菜单,并在左键单击上显示应用程序。
要实现此目的,我们需要在菜单(statusBarItem.menu = nil
)关闭后将其分离。否则,我们将停止接收statusBarButtonDidClick
事件,并且左键单击不起作用。
但是,当右键菜单被立即关闭后我附加了外部屏幕时。问题出在以下行中:statusBarItem.button?.performClick(nil)
,但如果没有该菜单,则不会立即出现。
我的猜测是performClick
试图点击另一个屏幕,该屏幕关闭了活动屏幕上的菜单。
没有performClick
,有没有办法解决它或实现相同的功能?
func createStatusBarItem() {
statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.squareLength))
if let button = statusBarItem.button {
button.image = Asset.Icons.statusbar.image
button.image?.size = CGSize(width: 16,height: 16)
button.target = self
button.action = #selector(statusBarButtonDidClick)
}
statusBarItem.button?.sendAction(on: [.leftMouseUp,.rightMouseUp])
}
func menuDidClose(_ menu: NSMenu) {
statusBarItem.menu = nil
}
@objc private func statusBarButtonDidClick(sender: NSStatusBarButton) {
let event = NSApp.currentEvent!
if event.type == NSEvent.EventType.rightMouseUp {
let statusBarMenu = StatusBarMenu()
statusBarMenu.delegate = self
statusBarItem.menu = statusBarMenu
statusBarItem.button?.performClick(nil)
} else {
application.showApplication()
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)