Detecter fleche directionnelle

CoreCore Membre
19:22 modifié dans API AppKit #1
Bonjour

je cherche a détecter les flèches du pavé directionnel dans ma NSView qui est deja FirstReponder

Ca doit tourner autour de
-(void)keydown : (NSEvent *)event


mais après je n'ai pas trouvé comment repérer les flèches

Merci !!

Réponses

  • 19:22 modifié #2
    Surcharge les méthodes -moveUp:, -moveDown:, -moveLeft:, -moveRight: de ta NSView. Elles prennent toutes un NSEvent comme argument.
  • CoreCore Membre
    janvier 2005 modifié #3
    dans 1105700040:

    Surcharge les méthodes -moveUp:, -moveDown:, -moveLeft:, -moveRight: de ta NSView. Elles prennent toutes un NSEvent comme argument.


    ok ca marche nickel ! ca c'etait pour gérer le deplacement d'un curseur

    Maintenant j'aimerais savoir quel chiffre est tapé par l'utilisateur,
    j'ai donc rajouté la methode - keydown mais elle semble prendre le pas sur mes moveRight, moveLeft, etc...
    En effet elle semblent inactives désormais, mon curseur ne bouge plus

    Merci d'avance
  • 19:22 modifié #4
    Il vaut mieux ne pas surcharger keyDown en fait, à  moins que tu aies vraiment besoin de désactiver les raccourcis clavier par exemple (comme pour un jeu). Ce qui keydown fait, c'est créer un tableau à  un élément qui contient l'event, puis envoie le tableau à  "-interpertKeyEvents:", qui lui suivant la l'événement appelle la méthode correspondante à  la touche pressée.
  • BruBru Membre
    19:22 modifié #5
    Si tu veux passer par keyDown: pour gérer des événements, n'oublie de transmettre à  "super" l'événement qui tu ne traites pas, sinon ta view deviendra insensible...

    <br />- (void)keyDown:(NSEvent *)theEvent<br />{<br />&nbsp; &nbsp; if ([NSCharacterSet decimalDigitCharacterSet] characterIsMember:[[theEvent characters] characterAtIndex:0]])<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; // code traitant les événements clavier spécifiques à  l&#39;appui d&#39;une touche numérique...<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; // sinon, je transmets l&#39;événement à  &quot;super&quot; pour continuer la suite du traitement.<br />&nbsp; &nbsp; else [super keyDown:theEvent];<br />}<br />
    


    .
  • CoreCore Membre
    19:22 modifié #6
    je suis vraiment épaté par vos reponses  o:)

    precis, efficace et rapide

    Si vous contrinuez comme cà  , j'ai pas fini de vous posez des questions à  la con  ;)
Connectez-vous ou Inscrivez-vous pour répondre.