如何限制NSPopUpButton的"弹出"大小?

Mir*_*ira 1 cocoa nspopupbutton

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

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

Mir*_*ira 5

我找到的解决方案如下:

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