2010-09-04 2 views
0

Puis-je capturer l'événement keyDown lorsque l'utilisateur dépose un fichier sur l'icône de l'application dans le dock? Par exemple, si l'utilisateur dépose sur l'icône de l'application certains fichiers, c'est gérer avec "method_one". Et si l'utilisateur dépose sur l'icône de l'application quelques fichiers et en maintenant la touche d'option, c'est gérer avec "method_two".Evénement KeyDown et drag'n'drop

Et tous "UI" dans cette application, il est juste une icône de quai. Aucune fenêtre, panneau, etc. merci

Répondre

1

Une méthode que vous pourriez utiliser serait d'interroger l'état de la clé lorsque votre application démarre. NSEvent ne fournit pas un moyen de le faire sans recevoir d'abord un événement mais vous pouvez utiliser CGEvent. Comme discuté here, vous pouvez créer un nouvel événement et interroger ses touches de modification. L'extrait de code ressemble à ceci:

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

exactement ce dont j'ai besoin. Merci! – nukl

+0

Malheureusement, la première ligne de l'extrait de code - 'CGEventRef event = CGEventCreate (NULL);' provoque une fuite de mémoire. Ai-je besoin d'une manière ou d'une autre de "libérer" cet "événement"? – nukl

+0

Oui, désolé, je n'ai pas prolongé l'extrait pour qu'il n'y ait pas de fuite. J'ai modifié ma réponse pour inclure une CFRelease. –