2013-08-22 1 views
4

От NSMenuItem Class ReferenceКак установить функциональные клавиши в качестве ключевых эквивалентов программно

Если вы хотите, чтобы указать ключ Backspace как ключевой эквивалент для пункта меню, используйте одну строку символов с NSBackspaceCharacter (определено в NSText .h как 0x08), а для клавиши Forward Delete используйте NSDeleteCharacter (определенный в NSText.h как 0x7F).

Не уверен, что я понимаю «использовать одну символьную строку с ...» из класса ref.

// Это работает, как ожидалось

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

ответ

1

Фигурные это сам.

unichar c = NSF2FunctionKey; 

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

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

enter image description here

4

Пример для Swift 2.0:

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

В Swift 3:

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

кинда раздражает, как я не могу просто превратить 'Int' в «Персонаж» ... –

Смежные вопросы