如何以编程方式将功能键设置为等效键

时间:2013-08-22 16:18:19

标签: xcode macos nsmenuitem

来自NSMenuItem类参考

如果要将Backspace键指定为菜单项的等效键,请使用带有NSBackspaceCharacter的单个字符串(在NSText.h中定义为0x08),对于Forw​​ard Delete键,请使用NSDeleteCharacter(在NSText中定义)。 h为0x7F)。

我不确定“从类引用中使用带有...”的单个字符串。

//按预期工作

NSString *s = [NSString stringWithFormat:@"%c",NSDeleteCharacter];

    [myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask];

    [myMenuItem setKeyEquivalent:s];

enter image description here

//这不能按预期工作

NSString *s = [NSString stringWithFormat:@"%c",NSF2FunctionKey];

    [myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask];

    [myMenuItem setKeyEquivalent:s];

enter image description here

3 个答案:

答案 0 :(得分:4)

Swift 2.0的示例:

let key = String(utf16CodeUnits: [unichar(NSBackspaceCharacter)], count: 1) as String
menuItem.keyEquivalentModifierMask = Int(NSEventModifierFlags.CommandKeyMask.rawValue)
menuItem.keyEquivalent = key

答案 1 :(得分:2)

自己想出来。

   unichar c = NSF2FunctionKey;

    NSString *f2 = [NSString stringWithCharacters:&c length:1];

    [mi setKeyEquivalent:f2];
    [mi setKeyEquivalentModifierMask:NSCommandKeyMask];

enter image description here

答案 2 :(得分:1)

Swift 3:

let f2Character: Character = Character(UnicodeScalar(NSF2FunctionKey)!)
myMenuItem.keyEquivalent: String(f2Character)
myMenuItem.keyEquivalentModifierMask = []