我正在尝试在cocoa应用程序中创建一个虚假的菜单栏。我已经能够完成我需要的95%,只有菜单栏与mainMenu不匹配。请参阅我目前为止的屏幕抓取。
我在xib中使用“弹出按钮”对象来尝试模拟系统菜单栏。问题是它是一个弹出菜单,看起来不像mainMenu。此外,标题菜单项不是hilite,弹出菜单具有与菜单标题重叠的圆角。所以,它很接近,但没有雪茄。
是否可以在无边框窗口内创建与默认系统菜单栏匹配的虚假菜单栏?如果是这样,怎么样?
我也尝试过使用NSStatusItem,默认情况下系统菜单栏比我用按钮完成的更接近,但是我无法将NSStatusItem嵌入到窗口中。
理想情况下,如果有办法直接在Windows视图中嵌入NSMenu,那将是最好的解决方案。
答案 0 :(得分:1)
您需要创建一个自定义按钮或视图,其外观和行为类似于顶级项目,然后将NSMenu
分配给您视图的menu
商店。
然后,您可以在视图中实现menuForEvent:
并在鼠标停止时返回菜单,或者在单击鼠标时调用NSMenu
类方法+popUpContextMenu:withEvent:forView:
。
顺便说一下,这似乎有点奇怪。你为什么要这样做?