2011-02-09 14 views
0

NSViewのサブクラス内でキーボードイベントを受信できません。キーボードイベント目的C

私はマウスイベントをうまく処理できますが、私のkeyDownメソッドとkeyUpメソッドは決して呼び出されません。両方のタイプのイベントが同じ階層に従っていることは、ドキュメンテーションごとに理解されていましたが、そうではありません。

これは最初のレスポンダーの問題ですか?フォーカスをつかむどこかのフィールド?私はそれを上書きしようとしましたが、運はありません。

洞察力があれば幸いです。

表示したい場合。これは、カスタムNSViewのクラス内にある:

#pragma mark - 
#pragma mark I/O Events 
-(void)keyDown:(NSEvent *)theEvent { 
    NSLog(@"Sup brah!"); 
} 

-(void)keyUp:(NSEvent *)theEvent { 
    NSLog(@"HERE"); 
} 

// This function works great: 
-(void)mouseDown:(NSEvent *)theEvent { 
    NSNumber *yeah = [[NSNumber alloc] initWithBool:YES]; 
    NSNumber *nah = [[NSNumber alloc] initWithBool:NO]; 
    NSString *asf = [[NSString alloc] initWithFormat:@"%@", [qcView valueForOutputKey:@"Food_Out"]]; 

    if ([asf isEqualToString:@"1"]) { 
     [qcView setValue:nah forInputKey:@"Food_In"]; 
     best_food_x_loc = convertToQCX([[qcView valueForOutputKey:@"Food_1_X"] floatValue]); 
     best_food_y_loc = convertToQCY([[qcView valueForOutputKey:@"Food_1_Y"] floatValue]); 
     NSLog(@"X:%f, Y:%f",best_food_x_loc, best_food_y_loc); 
    } else { 
     [qcView setValue:yeah forInputKey:@"Food_In"]; 
    } 
} 
+0

であるためにあなたのNSViewを設定する必要があり、あなたの ' mouseDown: 'メソッドがメモリをリークしています。 –

答えて

2

あなたがファーストレスポンダ

FYI

- (BOOL)acceptsFirstResponder { return YES; }

+0

私はそれを試しただけでなく、実際にはそこにそれを持っていたと私は誓ったでしょうか? –