2012-02-04 2 views
5

Ok, je comprends comment déterminer à partir d'un NSEvent si un ModifierKey est pressé:NSEvent: test pour un seul modfierkey

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

Mais cette capture aussi la touche option et un autre ModifierKey en même temps, par exemple Option + Maj ou toute combinaison avec la touche d'option.

Comment puis-je tester pour seulement la touche d'option et rien d'autre?

Répondre

4

Comme ceci:

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

Merci - Je vais faire cela dans une catégorie pour NSEvent et ajouter des méthodes similaires pour d'autres clés ainsi. – Koen

+0

Super! Si cela a résolu votre problème, veuillez cliquer sur la case verte à gauche! – user1118321

4

Vous pouvez également essayer

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

Merci à tous. Entre-temps, j'ai également trouvé une autre solution plus générale. J'espère que le formatage est correct.
'Modificateurs NSUInteger = [modificateur d'événement] & (NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask);
if (modifiers == NSAlternateKeyMask)
{
// seule alt a été pressée
} ' – Koen

Questions connexes