Hey everyone, I'm a newbie and I have what I anticipate will be a pretty easy 
question to answer. In order to learn a bit about event handling and drawing, 
I'm attempting to write a program that draws a black rectangle that increases 
in length every time the user hits the 'c' key. So far it just draws a black 
rectangle on a blue background without responding to keystrokes. 

Here is what I have so far:

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


I copied the keyDown method from Cocoa in a Nutshell, by the way. Needless to 
say, I don't really understand it.  Basically, I would love it if somebody 
could help me to get this program to work, because as of yet I have not gotten 
anything to respond to keystrokes.  I believe that I need to make Input the 
First Responder, but I'm not sure about that and I don't know how to 
anyway...this seems as if this should be such a basic program to create, but 
it's giving me endless frustration.  Please help!

Also the only thing I've done in IB is add a Custom View and change its class 
identity to Input. _______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to