2011-05-13 4 views
3

내 Cocoa 응용 프로그램이 Dock 아이콘에 파일 놓기를 지원하지만 수정 자 키가 눌려져 있는지 (Command, Option 등)에 따라 다른 동작이 필요합니다.).Dock에서 수정 키가 눌려져 있는지 확인하는 방법

currentEvent에 대해 modifierFlags을 확인했지만 변경자를 누르고 있는지 여부에 관계없이 동일합니다 (Option 키를 사용하여 테스트 했음).

코드 :

// Code is inside my AppDelegate 
- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)files { 
    BOOL optDown = (([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) 
        == NSAlternateKeyMask); 
    NSLog(@"flags: %u, down? %@", [[NSApp currentEvent] modifierFlags], 
      optDown ? @"YES" : @"NO"); 
} 

출력 (안 다음, 아래 옵션 키를 가진 파일을 삭제) :

flags: 1088, down? NO 
flags: 1088, down? NO 

예상

flags: <not sure>, down? YES 
flags: <different>, down? NO 

답변

13

일반적으로 앱이 최전방이 아닌 경우 [NSApp currentEvent]이 현재 사용자 상태와 관련이 있다고 기대할 수 없습니다.

최전방 응용 프로그램과 관계없이 작동하는 하드웨어 상태를 얻으려면 GetCurrentKeyModifiers()이 다시 10.0 (64 비트 포함)으로 지원됩니다. [NSEvent modifierFlags]은 10.6을 요구할 수있는 또 다른 옵션입니다.

+0

감사합니다. [NSEvent modifierFlags]는 (10.6 필요합니다) 트릭을 완벽하게 수행했습니다. – Dov

관련 문제