Как собрать ввод ключа в приложении Cocoa в стиле видеоигры? - PullRequest
11 голосов
/ 08 ноября 2008

Я взломал простое приложение Какао, чтобы блоки перемещались по экрану, как видеоигра. Мне нужно обнаруживать нажатия клавиш, но я не собираюсь вводить текстовые поля, как в диалоговом окне.

Как получить нажатия клавиш без текстовых элементов управления? В частности, мне нужно получить клавиши со стрелками.

1 Ответ

14 голосов
/ 08 ноября 2008

В представлении игры определите методы keyUp и keyDown:

@interface MyView : NSView
-(void)keyUp:(NSEvent*)event;
-(void)keyDown:(NSEvent*)event;
@end

@implementation MyView

-(void)keyUp:(NSEvent*)event
{
    NSLog(@"Key released: %@", event);
}

-(void)keyDown:(NSEvent*)event
{   
    // I added these based on the addition to your question :)
    switch( [event keyCode] ) {
        case 126:   // up arrow
        case 125:   // down arrow
        case 124:   // right arrow
        case 123:   // left arrow
            NSLog(@"Arrow key pressed!");
            break;
        default:
            NSLog(@"Key pressed: %@", event);
            break;
    }
}
@end

См. Документацию для NSView и NSEvent для получения дополнительной информации. Обратите внимание, что события keyDown и keyUp фактически определены для NSResponder , суперкласса для NSView.

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