首页 文章

在用户选择菜单项后,如何保持NSPopUpButton打开?

提问于
浏览
2

我有一个NSPopUpButton,为具有自定义视图的状态项提供NSMenu . 弹出按钮显示链接列表 . 当用户从列表中选择链接时,链接将显示在用户的浏览器中(在后台) .

当然,每次用户选择链接时菜单都会关闭 .

我想改变这个:我希望菜单在用户点击各种链接时保持打开状态,所有链接都可以在后台打开 . 当用户点击其他地方时,菜单就会消失 .

如何实现这一目标?我应该继承NSMenuItem并以某种方式拦截鼠标点击吗?在弹出的菜单上叠加一个透明的NSView,再次以某种方式拦截点击?我轻率地提出这些建议,但是我无法实现其中任何一个......指向正确的覆盖方法的指针将不胜感激 .

2 回答

  • 0

    可以使用可折叠的盒子而不是使用菜单 . 我已经在许多应用程序(也由Apple提供)中看到过,所以我想这是多个选择的推荐样式指南 . 当您单击公开按钮时,可折叠框会展开,并且它会释放所有需要的项目 - 例如带有复选框的桌面视图 . 在这种情况下,此框下方的视图必须向下移动,不要干扰框 .

    before

    enter image description here

    再次单击公开按钮会将框缩小回原点 . 效果类似于关闭菜单 .

  • 1

    通常你不应该将控件弯曲到原来的意图之外 . 用户希望在进行选择后关闭弹出按钮 . 我认为你不应该或者可以迫使NSPopUpButtonCell以这种方式行事 . 如果你这样做,你将会进行子类化和修改控件,以至于它可能会改变/破坏未来版本的Mac OS X.你还必须担心用户认为菜单在关闭后会关闭的可用性问题一个选择 .

    您可能会考虑编写自己的NSView子类,就像您正在描述的菜单按钮一样 . 用户点击按钮后 . 您将需要使用NSBorderlessWindowMask作为样式掩码来创建一个没有边框的新NSWindow . 该窗口的内容视图应该是您实现菜单选择的另一个自定义视图 .

相关问题