我正在开发状态栏应用程序。我想允许用户修改与他们自己的首选项等效的菜单项键。我看到这件事已经完成,这是一个非常常见的功能。 prefs窗口通常有一个带有文本字段的区域,用户可以在其中输入特定菜单项的键盘快捷键。
如何设置文本字段以便显示修饰键字体? 默认的NSTextfield忽略修饰符。
此外,我还没有找到显示此功能的示例项目,如果有人有一个非常有用的链接。
答案 0 :(得分:2)
您可能希望查看一下Shortcut Recorder,它允许用户使用修饰符记录等效键,然后让您检索它们并为NSMenuItem
设置它们。
一旦用户记录了他们的快捷键/组合键,您就可以访问SRRecorderControl
的{{1}}属性,该属性包含键码和修饰符标记的值。
答案 1 :(得分:0)
修饰键都具有您可以在“特殊字符”面板中看到的Unicode值,它们由普通系统字体显示。其中大多数都在调色板的“技术符号”类别中,但Shift和Caps Lock键的向上箭头位于“箭头”部分。
您可以在Interface Builder或Xcode中编辑标签元素时插入这些值,或者在创建类似NSString
对象的内容时包含相应的Unicode值。
例如,Shift键的UTF-8序列(如调色板中所示)为E2 87 A7
,因此以编程方式设置它的一种方法是将这些字节添加到数组并从中创建NSString
UTF-8阵列。我更喜欢阵列方法,因为它是“防弹的”;它将始终被解释为UTF-8并按照您的期望行事。如果您尝试将字符直接插入@""
或CFSTR()
字符串,则必须确保源文件的编码正确(并且旧版本的Xcode甚至不允许这样做,他们假设仅限ASCII)。