2012-02-04 14 views
5

Tamam, bir modifierkey basıldığında bir NSEvent dan nasıl belirleneceği anlıyorum:NSEvent: tek modfierkey test

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

Ama bu da optionkey ve aynı zamanda başka modifierkey, örneğin Seçenek yakalar + Shift veya optionkey ile herhangi bir kombinasyon.

sadece seçeneğini nasıl seçerim ve başka bir şey yok? Bunun gibi

cevap

4

:

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

Teşekkür deneyebilirsiniz - Ben NSEvent için bir kategori içine bu yapmak ve aynı zamanda diğer anahtarlar için benzer yöntemler ekleyeceğiz. – Koen

+0

Harika! Bu sorununuzu çözdüyse, lütfen soldaki yeşil onay kutusunu tıklayın! – user1118321

4

Ayrıca

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

Herkese teşekkürler. Bu arada ben de daha genel bir çözüm buldum. Umarım biçimlendirme tamamdır.
'NSUInteger değiştiricileri = [event modifierFlags] & (NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask);
(değiştiriciler == NSAlternateKeyMask)
{
// yalnızca alt basılmış
} ' – Koen

İlgili konular