2011-07-28 43 views
1

我有一个大的列表 - 超过200个项目 - 由NSPopUpButton管理。点击后,列表一直延伸到屏幕的顶部或底部并超出屏幕。如何限制NSPopUpButton的“弹出”大小?

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

+0

你想表达什么类型的内容?可能有更好的方法来做到这一点。 –

回答

4

200个项目对于弹出菜单来说太多了。 Mac人机界面指南recommend弹出菜单应该包含最多12个项目。

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

+2

一个典型的StackOverflow答案:“你做错了!” :-) 麻烦的是我希望这个控件只占用一行 - 如果我能让NSTableView“弹出”,那将是可爱的。 – Mira

+2

如果您可以定位狮子,那么您可以使用我想的弹出框。然而,我的观点是,你*是*做错了,你应该想另一种方式:-) –

4

我发现的解决方案是以下内容:

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

+1

嗨,我陷入了同样的问题,请你可以发表一些代码.. –