2010-10-25 18 views
3

J'ai remplacé une NSOpenGLView pour gérer les événements de clavier. La détection d'événement fonctionne bien, mais chaque fois que j'appuie sur une touche, j'entends et bosse un son ennuyeux. Comment puis-je dire à mon point de vue de se détendre?Bump son ennuyeux avec des événements de clavier dans NSOpenGLView sous-classe

Voici ce que mon keyUp: méthode ressemble à:

-(void) keyUp:(NSEvent *)theEvent 
{ 
    NSString *characters = [theEvent charactersIgnoringModifiers]; 

    if ([characters length] != 1) 
     return; 

    unichar keyChar = [characters characterAtIndex:0]; 

    if (keyChar == NSLeftArrowFunctionKey) 
    { 
     //do something 
     return; 
    } 

    if (keyChar == NSRightArrowFunctionKey) 
    { 
     //do something 
     return; 
    } 

    if (keyChar == NSUpArrowFunctionKey) 
    { 
     //do something 
     return; 
    } 

    if (keyChar == NSDownArrowFunctionKey) 
    { 
     //do something 
     return; 
    } 
} 

Répondre

3

Difficile à dire sans votre code, mais je suppose que vous avez passé l'événement jusqu'à super même si vous « consommé » il. Le bip dit "personne ne gère cet événement, donc la saisie au clavier n'est pas autorisée." Si vous consommez (manipulez) l'événement, ne le passez pas à super ou le système supposera que votre vue n'a pas géré l'événement.

+0

Désolé à ce sujet. Je pensais que c'était une question plus générale. J'ai ajouté du code à mon message d'origine. Vous pouvez très bien avoir raison sur la consommation de l'événement, mais je n'arrive pas à comprendre comment consommer un événement. – LandonSchropp

+1

Voir la liste 5-2 ici: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html%23//apple_ref/doc/uid/10000060i-CH7- SW1 ... c'est la façon "officielle" de faire ce que vous essayez de faire. Les méthodes proviennent de NSResponder (dont NSView est une sous-classe). –