gpt4 book ai didi

objective-c - 处理 NSStatusItem 上左键和右键单击时出现问题

转载 作者:行者123 更新时间:2023-11-30 10:32:36 26 4
gpt4 key购买 nike

我正在开发我的第一个 swift 应用程序,并且正在创建一个菜单栏按钮。左键单击将执行特定操作,右键单击将下拉菜单。发生的情况是我的左键单击最初会起作用。我的右键单击在第一次单击时不会弹出菜单,但在第二次单击时会弹出菜单。如果我不选择该操作,然后单击使菜单消失的其他任何位置,我最终会陷入一个奇怪的循环。左键单击和右键单击都会出现菜单。

我无法理解代码卡在哪里。我在网上找到的所有内容都指旧代码。

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


func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create the SwiftUI view that provides the window contents.

if let button = statusItem.button {
button.title = "test"
button.action = #selector(self.doSomething(sender:))
button.sendAction(on: [.leftMouseUp, .rightMouseUp])
}


}

@objc func doSomething(sender: NSStatusItem) {

let event = NSApp.currentEvent!

if event.type == NSEvent.EventType.rightMouseUp {
// Right button click
let statusBarMenu = NSMenu()
let item1 = NSMenuItem(title:"Quit", action:#selector(self.applicationQuit),keyEquivalent: "")
item1.target = self

statusBarMenu.addItem(item1)

statusItem.menu = statusBarMenu

} else {
// Left button click
print("hello world")

}

}

}

最佳答案

感谢 Willeke,我们找到了答案。代码应为:

if event.type == NSEvent.EventType.rightMouseUp {
// Right button click
let statusBarMenu = NSMenu()
let item1 = NSMenuItem(title:"Quit", action:#selector(self.applicationQuit),keyEquivalent: "")
item1.target = self

statusBarMenu.addItem(item1)

statusItem.menu = statusBarMenu
statusItem.button?.performClick(nil)
statusItem.menu = nil
}

引用:What is alternative to NSStatusItem.popUpMenu?

关于objective-c - 处理 NSStatusItem 上左键和右键单击时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58811941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com