如何在Cocoa上为MenuItem显示多个键或“和弦”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Cocoa上为MenuItem显示多个键或“和弦”相关的知识,希望对你有一定的参考价值。
我试图在cocoa中向MenuItem显示多个组合键。这通常被称为“和弦”。
例如,我想添加一个看起来像这样的菜单项:“Action1 Control K,F”或“MenuItem2 K,L”
这可以通过标准API在Objective-C中实现吗?我环顾四周,MacOS上最接近这个的就是使用自定义视图。它是允许这种功能的方法吗?
标准API不支持处理和弦,因此它不允许将和弦设置为等效键,因此它也不能将和弦显示为等效键。
如果您需要该功能,则需要完全自己实现。只需创建自己的NSView对象并将其分配给view
的NSMenuItem
属性。如记录所示,您必须自己绘制所有内容:
带有视图的菜单项不会绘制其标题,状态,字体或其他标准图形属性,并将绘图责任完全分配给视图。键盘等效和类型选择继续使用等效键和标题正常。
资料来源:https://developer.apple.com/documentation/appkit/nsmenuitem/1514835-view?language=objc
这是一个正常的NSView
填充子视图,以编程方式创建,甚至从NIB文件加载,或者这是否是NSView
的子类绘制一切本身取决于你,所有这些变化实际上都有效。通常,最简单的方法是使用NIB文件并在界面构建器中构建菜单外观并使用autolayout。
但请记住,这违反了Apple Human Interface准则。它违反了用户的期望,因为他的所有其他应用程序都没有提供任何可比性,因为在macOS中菜单项具有一个等效键或者没有。它还会破坏用户自定义密钥的能力,这与他用于所有其他应用程序的方式相同(系统偏好设置>键盘>快捷方式>应用程序快捷方式)。
通常你不应该用你自己的UI替换系统标准UI,除非你真的有这么做的理由,因为这总是打破了用户的期望,某些系统功能将无法按预期工作(例如可访问性功能)并且它会破坏统一系统的外观和感觉。它也会自动打破系统,你可以在macOS 10.14(Mojave)中看到所有系统标准UI自动支持暗模式,所以如果你只使用标准UI,你的应用程序支持黑暗模式而不做任何修改,但所有自定义UI都需要为暗模式再次定制。
是的,您需要使用自定义视图。 NSMenuItem
只显示其keyEquivalent
的第一个字符。
以上是关于如何在Cocoa上为MenuItem显示多个键或“和弦”的主要内容,如果未能解决你的问题,请参考以下文章