NSEvent:只测试一个modfierkey

koe*_*oen 5 cocoa nsevent modifier-key

好的,我知道如何从NSEvent确定是否按下了modifierkey:

if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        // The Option/Alt key was pressed
    }
Run Code Online (Sandbox Code Playgroud)

但是这也同时捕获了optionkey和另一个modifierkey,例如Option + Shift,或者与optionkey的任意组合.

如何测试选项键而不测试其他任何内容?

use*_*321 4

像这样:

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