2012-02-04 15 views
5

ठीक है, मैं समझता हूँ कि कैसे एक NSEvent से निर्धारित करने के लिए अगर एक modifierkey दबाया जाता है:NSEvent: केवल एक modfierkey के लिए परीक्षण

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

लेकिन यह भी optionkey और एक ही समय में एक और modifierkey, जैसे विकल्प कब्जा + शिफ्ट, या विकल्पकी के साथ कोई संयोजन।

मैं केवल विकल्पकी और कुछ और के लिए कैसे परीक्षण करूं?

उत्तर

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);
अगर (संशोधक == NSAlternateKeyMask)
{
// केवल alt
} दबाया गया था ' – Koen

संबंधित मुद्दे