如何限制NSPopUpButton的“弹出”大小?

时间:2011-07-28 01:31:13

标签: cocoa nspopupbutton

我有一个很大的列表 - 超过200个项目 - 由NSPopUpButton管理。单击时,列表会一直延伸到屏幕的顶部或底部以及更远处。

如何限制开放尺寸,以便一次显示最多20个项目?

2 个答案:

答案 0 :(得分:5)

我找到的解决方案如下:

我将NSPopUpButton子类化,并在我的子类中定义了confinementRectForMenu:onScreen:NSMenuDelegate协议的一部分)。这限制了列表占用的空间。不幸的是,你不能只指定一个尺寸,但必须做好确定位置的工作。您可以使用[self frame] origin,使用[[self superview] convertPointToBase:],稍微调整一下并执行其他任何计算,然后使用[[self window] convertBaseToScreen:]进行最终转换。

答案 1 :(得分:4)

弹出菜单中有200个项目太多。 Mac人机界面指南recommend,弹出菜单最多应包含12个项目。

您需要重新考虑您的设计。我建议您创建一个没有标题的单列NSTableView而不是弹出菜单,让您的用户从可滚动的选项列表中选择一个项目。