来自NSMenuItem类参考
如果要将Backspace键指定为菜单项的等效键,请使用带有NSBackspaceCharacter的单个字符串(在NSText.h中定义为0x08),对于Forward Delete键,使用NSDeleteCharacter(在NSText.h中定义为0x7F) ).
我不确定我从类ref中理解“使用带有…的单个字符串”.
//这按预期工作
NSString *s = [NSString stringWithFormat:@"%c",NSDeleteCharacter]; [myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; [myMenuItem setKeyEquivalent:s];
//这不会按预期工作
NSString *s = [NSString stringWithFormat:@"%c",NSF2FunctionKey]; [myMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; [myMenuItem setKeyEquivalent:s];
解决方法
Swift 2.0的示例:
let key = String(utf16CodeUnits: [unichar(NSBackspaceCharacter)],count: 1) as String menuItem.keyEquivalentModifierMask = Int(NSEventModifierFlags.CommandKeyMask.rawValue) menuItem.keyEquivalent = key