微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

菜单栏应用程序可以在弹出菜单或菜单之间切换吗?

如何解决菜单栏应用程序可以在弹出菜单或菜单之间切换吗?

我正在编写一个使用popover的MacOS菜单栏应用程序。我依靠许多教程来使事情进展。该应用程序不使用情节提要或Interface Builder。

计划是在右键单击时显示一个菜单,或者在左键单击时显示一个弹出框。

非常简短,代码看起来像这样:

class AppDelegate: NSObject,NSApplicationDelegate {
    var popover=NSPopover() 
    var statusBarItem: NsstatusItem!

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        //  Popover & Content View
            let contentView = ContentView()
            self.popover.contentViewController = NSHostingController(rootView: contentView)

        //  Menu
            self.statusBarItem = NsstatusBar.system.statusItem(withLength: 18)
            if let statusBarButton = self.statusBarItem.button {
                statusBarButton.title = "☰"
                statusBarButton.action = #selector(togglePopover(_:))
                statusBarButton.sendAction(on:  [.leftMouseUp,.rightMouseUp])      
            }
    }
    
    @objc func togglePopover(_ sender: AnyObject?) {
        let statusBarButton=self.statusBarItem.button!

        let event = NSApp.currentEvent!
        event.type == NSEvent.EventType.rightMouseUp ? print("Right-Click") : print("Left-Click")

        func show(_ sender: AnyObject) {
            self.popover.show(relativeto: statusBarButton.bounds,of: statusBarButton,preferredEdge: NSRectEdge.maxY)
        }
        func hide(_ sender: AnyObject) {
            popover.performClose(sender)
        }
        self.popover.isShown ? hide(sender as AnyObject) : show(sender as AnyObject)
    }
}

我可以使弹出窗口起作用,但是当右键单击该按钮时,我想如何显示一个不同的真实菜单。我该怎么办?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。