2012-02-04 18 views
5

Ok, tôi hiểu làm thế nào để xác định từ một NSEvent nếu một modifierkey được nhấn:NSEvent: test cho chỉ có một modfierkey

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

Nhưng điều này cũng nắm bắt được optionkey và một modifierkey cùng một lúc, ví dụ như Option + Shift hoặc bất kỳ kết hợp nào với phím tùy chọn.

Làm cách nào để thử nghiệm cho chỉ khóa tùy chọn và không có gì khác?

Trả lời

4

Như thế này:

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

Cảm ơn - Tôi sẽ làm cho điều này thành một thể loại cho NSEvent và thêm các phương pháp tương tự cho các phím khác. – Koen

+0

Tuyệt vời! Nếu điều này giải quyết được vấn đề của bạn, hãy nhấp vào hộp kiểm màu xanh lá cây ở bên trái! – user1118321

4

Bạn cũng có thể thử

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

Cảm ơn mọi người. Trong khi đó, tôi cũng tìm thấy một giải pháp tổng quát hơn. Tôi hy vọng định dạng là ok.
'NSUInteger modifiers = [event modifierFlags] & (NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask);
if (modifiers == NSAlternateKeyMask)
{
// chỉ alt được nhấn
} ' – Koen

Các vấn đề liên quan