菜单栏图标的菜单菜单与菜单栏本身重叠

menu for menubar icon's menu keeps overlaping the menubar itself

 menuBarIconMenu.popUp(positioning: menuBarIconMenu.item(at: 0), at: NSPoint(x: 1842, y: 1414), in: nil)

我使用此代码打开菜单,但它不会像所有其他菜单一样位于菜单栏后面,有什么方法可以让它位于菜单栏后面?


更新1:

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

    menuBarMenuIcon = (statusItem?.button)!; menuBarMenuIcon.image = NSImage(named: "MenuBarButton"); menuBarMenuIcon.action = #selector(menuBarMenuClicked); menuBarMenuIcon.sendAction(on:    [.leftMouseUp,.rightMouseUp])

这就是我分配菜单的方式

更新 2:

这有效 statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength) statusItem?.menu = menuBarIconMenu

在我的一个应用程序的早期版本中,我也通过调用弹出功能手动打开菜单并遇到类似的问题。你是如何分配 NSMenu 的?我建议您将 NSMenu 分配给 NSStatusItem 的菜单 属性。这样您就不必手动添加代码来打开菜单。您是否已将自定义 NSView 实例分配给您的 NSStatusItem?

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

func applicationDidFinishLaunching(_ aNotification: Notification)
{
    self.statusItem.menu = self.createMenu()
}

private func createMenu() -> NSMenu
{
    // Close
    let menu = NSMenu()
    menu.addItem(NSMenuItem(title: "Quit", action: #selector(self.quit), keyEquivalent: "q"))

    return menu
}