1
在按手勢識別我試圖找出是否CMD或Shift鍵被按下,這樣的處理程序:如何在NSPressGestureRecognizer事件期間檢測CMD或Shift鍵是否被按下?
- (void)handlePress:(NSPressGestureRecognizer*)gr {
NSEventModifierFlags flags = [[NSApp currentEvent] modifierFlags];
if (flags & NSCommandKeyMask) {
NSLog(@"CMD pressed");
}
}
然而,標誌僅在keyDown或keyUp事件處理方法正確設置。 NSGestureRecognizer似乎沒有公開事件對象,因此我從NSApp獲得currentEvent。我錯過了什麼?
你是對的。檢查[keyDown](https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSGestureRecognizer_Class/index.html#//apple_ref/occ/instm/NSGestureRecognizer/keyDown :) NSGestureRecognizer類的方法描述: 「手勢識別器監視其視圖(和任何子視圖)中發生的事件,但不參與響應者鏈本身。手勢識別器在任何視圖執行前接收事件。使用delaysKeyEvents屬性來控制事件是否傳播到視圖。「 – comrade