Bonjour,
Je suis en train de faire une petite appli document-oriented cocoa/obj-c et j'ai un problème avec une textview. J'ai d'abord réalisé l'appli avec avec une NSTextView on ne peut plus conventionnelle et puis je me suis rendu compte que j'avais besoin d'utiliser la fonction keyDown de NSResponder. Je crée alors une sous-classe perso (appelons la MyTextView) ou je définis la fonction :
Code:
- (void)keyDown
NSEvent*)theEvent
{
NSLog(@"keyDown");
}
Je me rend compte ensuite que je ne peux pas modifier la NSTextView d'origine dans IB (onglet Custom class : j'ai "Not Applicable"). Pas grave, je me dirige vers le bouquin d'Hillegass ou je me souvenais qu'il créait vers la fin une NSTextView perso. Sa manière à lui consiste à créer un outlet de la NSScrollView liée à la NSTextView d'origine (j'ai donc deux outlet dans ma classe : NSTextView* mainTextView et NSScrollView *mainScrollView) et à faire ceci :
Code:
- (void)windowControllerDidLoadNib
NSWindowController*)aController
{
NSSize contentSize = [mainScrollView contentSize];
mainTextView = [[MyTextView alloc] initWithFrame:NSMakeRect(0,0,contentSize.width,contentSize.height];
}
Bon, je lance l'appli mais je peux rien écrire dans la TextView. Je me dis "Normal, j'ai pas redirigé les keyDown vers le super". Je réécris donc keyDown de cette manière :
Code:
- (void)keyDown
NSEvent*)theEvent
{
NSLog(@"keyDown");
[super keyDown:theEvent];
}
Je relance l'appli et là, je peux écrire dedans, mais je ne vois à aucun moment sur le Log les traces de l'appel de keyDown (que je devrais voir vu que j'ai fait un NSLog).
Voila, j'en suis là. Y a-t-il quelqu'un pour m'aider à me sortir de cette galère ? Ce que je trouve pas logique, c'est que quand la fonction n'est pas correctement écrite, l'appli ne marche pas et quand elle est censée marcher, elle ne semble plus être appelée icon_eek.gif .
Désolé pour la longueur du message, mais je préfère détailler les choses une bonne fois pour pas avoir à le faire par petit bout au fur et à mesure des questions.
Merci.
Je suis en train de faire une petite appli document-oriented cocoa/obj-c et j'ai un problème avec une textview. J'ai d'abord réalisé l'appli avec avec une NSTextView on ne peut plus conventionnelle et puis je me suis rendu compte que j'avais besoin d'utiliser la fonction keyDown de NSResponder. Je crée alors une sous-classe perso (appelons la MyTextView) ou je définis la fonction :
Code:
- (void)keyDown
{
NSLog(@"keyDown");
}
Je me rend compte ensuite que je ne peux pas modifier la NSTextView d'origine dans IB (onglet Custom class : j'ai "Not Applicable"). Pas grave, je me dirige vers le bouquin d'Hillegass ou je me souvenais qu'il créait vers la fin une NSTextView perso. Sa manière à lui consiste à créer un outlet de la NSScrollView liée à la NSTextView d'origine (j'ai donc deux outlet dans ma classe : NSTextView* mainTextView et NSScrollView *mainScrollView) et à faire ceci :
Code:
- (void)windowControllerDidLoadNib
{
NSSize contentSize = [mainScrollView contentSize];
mainTextView = [[MyTextView alloc] initWithFrame:NSMakeRect(0,0,contentSize.width,contentSize.height];
}
Bon, je lance l'appli mais je peux rien écrire dans la TextView. Je me dis "Normal, j'ai pas redirigé les keyDown vers le super". Je réécris donc keyDown de cette manière :
Code:
- (void)keyDown
{
NSLog(@"keyDown");
[super keyDown:theEvent];
}
Je relance l'appli et là, je peux écrire dedans, mais je ne vois à aucun moment sur le Log les traces de l'appel de keyDown (que je devrais voir vu que j'ai fait un NSLog).
Voila, j'en suis là. Y a-t-il quelqu'un pour m'aider à me sortir de cette galère ? Ce que je trouve pas logique, c'est que quand la fonction n'est pas correctement écrite, l'appli ne marche pas et quand elle est censée marcher, elle ne semble plus être appelée icon_eek.gif .
Désolé pour la longueur du message, mais je préfère détailler les choses une bonne fois pour pas avoir à le faire par petit bout au fur et à mesure des questions.
Merci.