Как собрать ввод ключа в приложении Cocoa в стиле видеоигры?
Я взломал простое приложение Какао, чтобы блоки перемещались по экрану, как видеоигры. Мне нужно обнаруживать нажатия клавиш, но я не собираюсь вводить текстовые поля, как в диалоговом окне.
Как получить нажатия клавиш без текстовых элементов управления? В частности, мне нужно получить клавиши со стрелками.
1 ответ
Решение
В своем игровом представлении определите методы 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.