Ваш пример кода не работает, потому что -modifierFlags
является битовой маской, и поэтому проверка, равна ли маска NSShiftKeyMask
, не будет работать.Вам нужно использовать побитовый оператор AND
, чтобы проверить, установлен ли флаг:
if ([event modifierFlags] & NSShiftKeyMask) {
NSLog(@"Shift key pressed");
}
Кроме того, если вы хотите сохранить этот результат в BOOL
, вам нужно проверить, что онне равно 0, например:
BOOL shiftKeyPressed = ([event modifierFlags] & NSShiftKeyMask) != 0;
Если вы пропустите это значение, BOOL
будет иметь значение NO
(если только значение, которое вы извлекаете из битовой маски, не равно 1, которое определяется как YES
; для -modifierFlags
этого не произойдет, поскольку маски начинаются с 1 << 16
).