2012-02-04 5 views
5

Хорошо, я понимаю, как определить из NSEvent если modifierkey нажата:NSEvent: тест только один modfierkey

if ([theEvent modifierFlags] & NSAlternateKeyMask) { 
     // The Option/Alt key was pressed 
    } 

Но это также захватывает optionkey и другой modifierkey в то же время, например, Option + Shift или любую комбинацию с ключом опции.

Как проверить для только ключ опции и ничего больше?

ответ

4

Как это:

const NSUInteger kNotAlt = NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask; 
NSUInteger modFlags = [theEvent modifierFlags]; 
if (((modFlags & NSAlternateKeyMask) != 0) && 
    ((modFlags & kNotAlt) == 0)) 
{ 
    // Only alt was pressed 
} 
+0

Спасибо - я сделаю это в категорию для NSEvent и добавить аналогичные методы для других ключей. – Koen

+0

Отлично! Если это решит вашу проблему, нажмите зеленый флажок слева! – user1118321

4

Вы также можете попробовать

NSUInteger modFlags = [theEvent modifierFlags]; 
if ((modFlags & NSCommandKeyMask) && !(modFlags & ~NSCommandKeyMask)) 
{ 
    // Only alt was pressed 
} 
+1

Спасибо всем. Тем временем я также нашел другое, более общее решение. Я надеюсь, что форматирование в порядке.
'NSUInteger modifiers = [event modifierFlags] & (NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask);
if (модификаторы == NSAlternateKeyMask)
{
// нажат только alt
} ' – Koen

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

  • Нет связанных вопросов^_^