2010-09-04 102 views
0

我可以捕獲keyDown事件時,用戶將文件放在塢中的應用程序圖標上?KeyDown事件和drag'n'drop

例如,如果用戶在應用程序圖標上放置了一些文件,那麼就是使用「method_one」處理。如果用戶在應用程序圖標上放置一些文件並保存選項密鑰,那麼就是用「method_two」處理。

而在這個應用程序中的所有「用戶界面」它只是一個停靠欄圖標。沒有窗戶,面板等 謝謝

回答

1

您可以使用的一種方法是輪詢應用程序啓動時的關鍵狀態。如果沒有首先接收事件,NSEvent不提供這種方法,但您可以使用CGEvent。如討論here,您可以創建一個新事件並輪詢其修飾鍵。代碼片段看起來像這樣:

CGEventRef event = CGEventCreate(NULL); 
CGEventFlags mods = CGEventGetFlags(event); 
if(mods & kCGEventFlagMaskShift) 
    NSLog(@"Shift key is being pressed"); 
CFRelease(event); 
+0

正是我所需要的。謝謝! – nukl 2010-09-04 14:20:25

+0

不幸的是代碼片段中的第一行 - 'CGEventRef event = CGEventCreate(NULL);'導致內存泄漏。我是否需要'釋放'這個'事件'? – nukl 2010-09-04 23:26:54

+0

是的,對不起,我沒有擴展該片段以免泄漏。我修改了我的答案以包含CFRelease。 – 2010-09-04 23:36:12