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"];
}
}
であるためにあなたのNSViewを設定する必要があり、あなたの ' mouseDown: 'メソッドがメモリをリークしています。 –