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