Привет всем, я новичок, и у меня есть вопрос, на который, как я ожидаю, будет довольно легко ответить. Чтобы немного узнать об обработке событий и рисовании, я пытаюсь написать программу, которая рисует черный прямоугольник, длина которого увеличивается каждый раз, когда пользователь нажимает клавишу «c». Пока он просто рисует черный прямоугольник на синем фоне, не реагируя на нажатия клавиш. Вот что у меня есть до сих пор:
Вход.ч
#import <Cocoa/Cocoa.h>
@interface Input : NSView {
int length;
}
- (void)keyDown:(NSEvent *)theEvent;
@end
Вход.м
#import "Input.h"
@implementation Input
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
length = 10;
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect {
//set variables
NSRect r1;
NSBezierPath *bp;
// set background color
[[NSColor blueColor] set];
NSRectFill(dirtyRect);
//set color to black & draw r1
[[NSColor blackColor] set];
r1 = NSMakeRect(1, 1, length, 10);
bp = [NSBezierPath bezierPathWithRect:r1];
[bp fill];
}
- (void)keyDown:(NSEvent *)theEvent
{
NSString *key = [theEvent characters];
if ( [key isEqualToString:@"c"] ) {
length += 10;
}
}
@end
Кстати, я скопировал метод keyDown из Cocoa in a Nutshell. Излишне говорить, что я действительно не понимаю этого. Должен ли я устанавливать соединения в IB, чтобы программа распознавала нажатия клавиш? По сути, я был бы рад, если бы кто-нибудь помог мне заставить эту программу работать, потому что до сих пор я не получил ничего, что могло бы реагировать на нажатия клавиш.
А вот Кратко о какао