Salut tout le monde, je suis un débutant et j'ai ce que j'anticipe sera une question assez facile à répondre. Afin d'en apprendre un peu plus sur la gestion des événements et le dessin, j'essaye d'écrire un programme qui dessine un rectangle noir dont la longueur augmente chaque fois que l'utilisateur touche la touche 'c'. Jusqu'à présent, il dessine simplement un rectangle noir sur un fond bleu sans répondre aux frappes. Voici ce que j'ai jusqu'à présent:Cocoa: Accepter et répondre aux frappes
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
Je copié la méthode keyDown de cacao dans un Nutshell, par la voie. Inutile de dire que je ne le comprends pas vraiment. Dois-je établir des connexions dans IB pour que le programme reconnaisse les frappes au clavier? Fondamentalement, j'adorerais que quelqu'un puisse m'aider à faire fonctionner ce programme, car pour l'instant, je n'ai rien reçu pour répondre aux frappes.
Et voici Cocoa in a Nutshell
Wow, merci pour la réponse rapide; Je ne m'attendais vraiment pas à ce que quelqu'un revienne aussi vite. J'ai ajouté ces méthodes à Input.m, mais je crains que cela ne fonctionne toujours pas: (Je pense que cela devrait être quelque chose de si basique, mais il semble que j'ai frappé un mur. Et encore, merci beaucoup –
Voir la mise à jour ci-dessus Si cela échoue, et le message n'est pas enregistré, alors nous devrons creuser un peu plus loin – walkytalky
Très bien! Vous êtes l'homme. C'était vraiment frustrant, la méthode setNeedsDisplay a fait l'affaire, je ne sais pas pourquoi, mais j'avais l'impression que la vue était activement redessinée, encore une fois, merci d'avoir pris le temps d'aider un débutant. –