События клавиатуры Цель C - PullRequest
0 голосов
/ 09 февраля 2011

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

1 Ответ

2 голосов
/ 09 февраля 2011

Вы должны установить свой NSView, чтобы быть первым респондентом

- (BOOL)acceptsFirstResponder { return YES; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...