Привет всем, я новичок, и у меня есть то, что я ожидаю, будет довольно легко ответить на вопрос. Чтобы немного узнать об обработке событий и рисовании, я пытаюсь написать программу, которая рисует черный прямоугольник, длина которого увеличивается каждый раз, когда пользователь нажимает клавишу «c». Пока что он просто рисует черный прямоугольник на синем фоне, не реагируя на нажатия клавиш. Вот что у меня есть:
Input.h
#import <Cocoa/Cocoa.h>
@interface Input : NSView {
int length;
}
- (void)keyDown:(NSEvent *)theEvent;
@end
Input.m
#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 из Какао в двух словах. Само собой разумеется, я действительно не понимаю это. Нужно ли устанавливать соединения в IB, чтобы программа распознала нажатия клавиш? Вообще-то, мне бы очень хотелось, чтобы кто-нибудь помог мне заставить эту программу работать, потому что до сих пор я не получил ничего, чтобы реагировать на нажатия клавиш.
А вот и Какао в двух словах