みなさん、こんにちは。私は初心者です。答えるのはとても簡単な質問になると思います。イベントの処理と描画について少し学ぶために、ユーザーが「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
ちなみに、CocoaからkeyDownメソッドを簡単にコピーしました。言うまでもなく、私はそれを本当に理解していません。プログラムにキーストロークを認識させるには、IBで接続する必要がありますか?基本的に、誰かがこのプログラムを動作させるのを手伝ってくれるなら、私はそれが大好きです。なぜなら、まだ私はキーストロークに応答するものを何も得ていないからです。