我注意到,如果我说类似

[self.undoManager setActionName: @"X & Y"];


那么结果菜单项看起来就像“撤消X Y”(X和Y之间有双倍空格)。 (在Mac OS X 10.7.5和10.10.3上进行了测试)我可以通过将其加倍来显示&符,但是我想知道为什么会发生吗?有文件记录吗?在操作名称或菜单项中是否存在一些专门解释的更广泛的字符集?

最佳答案

在NeXT时代,菜单项可能带有“助记符”,这是在菜单中带有下划线的字符。如果用户在菜单聚焦时键入了该字符,则将选择该项目。

在代码中,助记符在菜单标题字符串中显示,方法是在字符前面加上与号。 NSMenuItem上仍然存在不赞成使用的方法来设置和获取助记符。

OS X不支持该功能。它不会显示带下划线的字符,也不会让您通过键入来选择菜单项。因此,这些方法只是将标题中的&符号删除。

显然,NSUndoManager仍必须使用那些基于助记符的API之一来设置菜单项标题。大概是为了向后兼容。某些应用可能会在撤消操作名称中使用“&”号,目的是将它们转换为助记符。如果NSUndoManager停止删除它们(通过切换为NSMenuItem的更常见,非助记方法),则这些应用可能会在奇怪的地方开始显示“&”号。

关于macos - NSUndoManager操作名称中的“&”符号有何特殊之处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30786942/

10-09 16:16