如何在NSPopUpButton中更改NSMenuItem的短显示形式?

时间:2011-08-05 23:12:12

标签: cocoa nspopupbutton

我有一个带有长项目菜单的NSPopUpButton,其中一些项目非常宽 - 比按钮的封闭宽度宽。一些菜单项标题是这样的:

“开始一个非常有趣的长名称(重要信息)”

菜单关闭时,显示为:

“开始一个非常长的名字而不是......”

我希望它显示为:

“开始真正......(重要信息)”

我无法弄清楚NSPopUpButton是如何创建省略号的。是否在NSMenuItem上调用了一个选择器? NSPopUpButton或NSMenu会以某种方式处理吗?

我需要哪个类进行子类化以及我需要覆盖或实现哪个选择器?

非常感谢。

2 个答案:

答案 0 :(得分:0)

此机制称为截断。 Interface Builder中有一个名为换行符的选项,该选项分组在控制组中。您可能正在寻找的设置称为Truncate Middle,它将从菜单项的中间开始挑选字母。

但请注意,这并不能完全解决您的问题,因为(important info)部分可能不是“......”之后唯一剩下的部分,而是Name of my Me…tem (important info)。此外,您最终可能会得到部分截断的重要信息。但只要重要信息是一些数字或几个字母,我就认为你很好

也许在菜单项中添加图片可能更符合您的需求(某种徽章)?也许还有一个选项可以将字符串归因于强制字母不被截断......但不确定。

答案 1 :(得分:0)

法比安给了我所需要的线索。谢谢!

[[self cell] setLineBreakMode: NSLineBreakByTruncatingMiddle]

但是,如果有办法获得更细粒度的控制,那就更好了。有没有办法更精确地控制截断?