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

发布于 2024-11-26 23:16:56 字数 116 浏览 0 评论 0原文

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

如何限制打开大小,以便一次最多显示 20 个左右的项目?

I have a large list - over 200 items - managed by an NSPopUpButton. When clicked, the list extends all the way to the top or bottom of the screen and beyond.

How can I limit the open size, so that at most 20 or so items are shown at once?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〆凄凉。 2024-12-03 23:16:56

我找到的解决方案如下:

我对 NSPopUpButton 进行了子类化,并在子类中定义了 confinementRectForMenu:onScreen:NSMenuDelegate 协议)。这限制了列表占用的空间。不幸的是,您不能只指定尺寸,还必须确定位置。您可以采用[self frame] origin,使用[[self superview] ConvertPointToBase:],稍微推动它并进行任何其他计算,然后使用进行最终转换[[自身窗口]convertBaseToScreen:]

The solution I found was the following:

I subclassed NSPopUpButton, and in my subclass defined confinementRectForMenu:onScreen: (part of the NSMenuDelegate protocol). This limits the space that the list takes up. Unfortunately, you can't just specify a size but must do the work to determine the position. You can take [self frame] origin, use [[self superview] convertPointToBase:], nudge it over a bit and do whatever other calculations, then do a final conversion with [[self window] convertBaseToScreen:].

記憶穿過時間隧道 2024-12-03 23:16:56

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

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

200 items is too many for a pop-up menu. The Mac Human Interface Guidelines recommend that a pop-up menu should contain a maximum of 12 items.

You need to rethink your design. I suggest that instead of the pop-up menu, you create a single-column NSTableView with no header and let your users select an item from a scrollable list of options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文