У меня проблемы с получением событий клавиатуры в подклассе NSView.
Я могу нормально обрабатывать события мыши, но мои методы 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"];
}
}