2010-10-25 17 views
3

我重寫了一個NSOpenGLView來處理鍵盤事件。事件檢測工作正常,但每當我按下一個按鍵時,我都會聽到煩人的撞擊聲。我怎麼能告訴我的觀點冷靜下來?NSOpenGLView子類中的鍵盤事件令人討厭的碰撞聲音

這裏是我使用keyUp什麼:方法如下所示:

-(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; 
    } 
} 

回答

3

很難說沒有你的代碼,但我猜你傳遞的事件上升到「消費」它超級即使你。嘟嘟聲說「沒有人處理這個事件,所以不允許鍵盤輸入。」如果您使用(處理)事件,請不要將其傳遞給超級用戶,否則系統將假定您的視圖不處理事件。

+0

對不起。我認爲這是一個更普遍的問題。我已將代碼添加到原始帖子中。關於事件消費你可能是正確的,但我似乎無法弄清楚如何消費事件。 – LandonSchropp 2010-10-25 17:18:32

+1

參見清單5-2:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html%23//apple_ref/doc/uid/10000060i-CH7- SW1 ......這是「正式」的方式來做你想做的事情。這些方法來自NSResponder(其中NSView是其子類)。 – 2010-10-25 17:57:49