0
안녕하세요 여러분, 저는 초보자이며 예상 한 바가 대답하기 쉬운 질문 일 것입니다. 이벤트 처리 및 그리기에 대해 조금 배우기 위해 사용자가 'c'키를 누를 때마다 길이가 증가하는 검은 색 사각형을 그려주는 프로그램을 작성하려고합니다. 지금까지는 키 입력에 응답하지 않고 파란색 배경에 검정 사각형을 그립니다. 여기에 지금까지 무엇을 가지고 :코코아 : 키 스트로크 허용 및 응답
Input.h
#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
Input.m
나는 그런데, 간단히 말해서 코코아에서를 keyDown 방법을 복사. 말할 것도없이, 나는 그것을 정말로 이해하지 못한다. 프로그램에 키 입력을 인식 시키려면 IB에서 연결해야합니까? 기본적으로 누군가가이 프로그램을 작동 시키도록 도와 줄 수 있다면 좋겠지 만, 키 스트로크에 응답하는 데 아무 것도 입지 않았기 때문에 나는 그것을 좋아할 것입니다.그리고 여기이보기가 첫 번째로 반응하게 할 필요가 키 입력을받을 수, Cocoa in a Nutshell
적시에 응답 해 주셔서 감사합니다. 나는 정말로 누군가가 그것을 빨리 되 찾을 것으로 기대하지 않았다. Input.m에 이러한 메서드를 추가했지만 여전히 작동하지 않는 것이 두려워요. (이 기본 뭔가가 있어야한다고 생각하지만 아직 벽에 부딪힌 것 같습니다. 다른 아이디어 나 제안 사항 ? –
위의 업데이트를 참조하십시오. 실패하고 메시지가 기록되지 않으면 조금 더 자세히 조사해야합니다. – walkytalky
괜찮습니다! 왜 그런지 모르겠지만 뷰가 활발하게 다시 그려지고 있다는 느낌을 받았습니다. 다시 초보자를 도와 주셔서 감사합니다. –