我有一个带有自定义视图(TimeView)的NSStatusItem,但这会阻止点击显示与NSStatusItem
关联的NSMenu。如果我禁用NSStatusItem
的视图,那么菜单会正确显示,但是,如果我启用它,那么当我点击视图时没有任何反应。
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var statusMenu: NSMenu!
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
func applicationDidFinishLaunching(aNotification: NSNotification) {
statusItem.view = TimeView(statusItem: statusItem)//Commenting out this line provides the correct functionality for displaying the menu
statusItem.menu = statusMenu
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
非常感谢,Ben
答案 0 :(得分:0)
所以我找到了实现这个目标的方法。您可以使用NSStatusItem
的{{1}}方法在观看popUpStatusItemMenu(menu: NSMenu)
方法中显示菜单。
但是,这并不会突出显示NSStatusItem。我能找到的最简单的方法是使视图符合mouseDown(event: NSEvent)
并将其设置为菜单委托。然后,您可以按以下方式覆盖NSMenuDelegate
和menuWillOpen(menu: NSMenu)
方法:
menuDidClose(menu: NSMenu)