我有一个很大的列表 - 超过200个项目 - 由NSPopUpButton管理。单击时,列表会一直延伸到屏幕的顶部或底部以及更远处。
如何限制开放尺寸,以便一次显示最多20个项目?
答案 0 :(得分:5)
我找到的解决方案如下:
我将NSPopUpButton子类化,并在我的子类中定义了confinementRectForMenu:onScreen:
(NSMenuDelegate协议的一部分)。这限制了列表占用的空间。不幸的是,你不能只指定一个尺寸,但必须做好确定位置的工作。您可以使用[self frame] origin
,使用[[self superview] convertPointToBase:]
,稍微调整一下并执行其他任何计算,然后使用[[self window] convertBaseToScreen:]
进行最终转换。
答案 1 :(得分:4)
弹出菜单中有200个项目太多。 Mac人机界面指南recommend,弹出菜单最多应包含12个项目。
您需要重新考虑您的设计。我建议您创建一个没有标题的单列NSTableView
而不是弹出菜单,让您的用户从可滚动的选项列表中选择一个项目。