Xcode Swift:将NSStatusBarButton设置为在显示NSPover后高亮显示

Xcode Swift:将NSStatusBarButton设置为在显示NSPover后高亮显示,xcode,macos,swift,Xcode,Macos,Swift,我有一个NSPover连接到窗口的NSView。目前,我有一个NSStatusItem,显示NSStatusMenu。当您单击该菜单中的某个选项时,我将该菜单设置为nil,然后显示nspover。问题是,我希望在显示NSPover时状态栏按钮保持高亮显示,但它仅在我单击按钮打开NSPover时闪烁高亮显示。我尝试过statusItem.button?.highlight(true)但无效,而且更改按钮类型似乎也没有任何作用。有什么想法吗?谢谢此外,是否有任何方法可以在打开NSPOVER后使NSV

我有一个NSPover连接到窗口的NSView。目前,我有一个NSStatusItem,显示NSStatusMenu。当您单击该菜单中的某个选项时,我将该菜单设置为nil,然后显示nspover。问题是,我希望在显示NSPover时状态栏按钮保持高亮显示,但它仅在我单击按钮打开NSPover时闪烁高亮显示。我尝试过statusItem.button?.highlight(true)但无效,而且更改按钮类型似乎也没有任何作用。有什么想法吗?谢谢此外,是否有任何方法可以在打开NSPOVER后使NSView位于popover内,或者更具体地说,使NSView中的文本字段处于选中状态?我将popover行为设置为transient,但只有在您首先单击popover,然后在popover外部单击时,它才会关闭

@IBOutlet weak var mainMenu: NSMenu!
@IBOutlet weak var popover: NSPopover!
@IBOutlet weak var popoverView: NSView!
@IBOutlet weak var textField: NSTextField!

// init new menu bar item
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)

func applicationDidFinishLaunching(aNotification: NSNotification) {

    // init menu bar item icon
    let icon = NSImage(named: "menuIcon")
    icon?.setTemplate(true)         // now compatible with "dark mode"
    statusItem.image = icon
    statusItem.menu = mainMenu
    popover.behavior = NSPopoverBehavior.Transient
    //statusItem.button?.setButtonType(NSButtonType.OnOffButton)
}

@IBAction func StatusItemClicked(sender: NSButton) {
    if !(popover.shown) {
        popover.showRelativeToRect(sender.bounds, ofView: statusItem.button!, preferredEdge: NSMinYEdge)
    }
    else {
        popover.close()
    }
}

@IBAction func movieRegular(sender: NSMenuItem) {
    statusItem.menu = nil                                   // get rid of statusItem menu
    statusItem.action = Selector("StatusItemClicked:")      // func StatusItemClicked called when button clicked
    StatusItemClicked(statusItem.button!)                   // call it so popover immediately displays first time
}
可能重复的