1

我有一个 NSPopUpButton 带有一个长菜单项,其中一些非常宽 - 比按钮的闭合宽度更宽。一些菜单项标题如下:

“一个很长的名字的开头并不那么有趣(重要信息)”

菜单关闭时,显示为:

“一个很长的名字的开头不是......”

我希望它显示为:

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

我不知道 NSPopUpButton 是如何创建省略号的。NSMenuItem 上是否调用了选择器?NSPopUpButton 或 NSMenu 是否以某种方式处理?

我需要子类化哪个类,需要覆盖或实现哪个选择器?

非常感谢。

4

2 回答 2

0

Fabian 给了我需要的线索。谢谢!

[[self cell] setLineBreakMode: NSLineBreakByTruncatingMiddle]

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

于 2011-08-07T09:03:31.277 回答
0

这种机制称为截断。Interface Builder 中有一个名为Line Breaks的选项,它被分组在Control组中。您可能正在寻找的设置被调用Truncate Middle,它将开始从菜单项的中间挑选字母。

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

也许向菜单项添加图像可能更适合您的需求(某种徽章)?也许还有一个属性字符串选项可以强制字母不被截断……但不确定。

于 2011-08-05T23:52:45.013 回答