NSFont name & size
Bonjour,
Grâce à la méthode - (void)changeFont:(id)sender de NSFontManager je sais quand l'on change de font depuis un fontPanel
J'ai dc fait :
manque de pot j'ai tout un tas de truc imcompréhensible ds le textfield
Grâce à la méthode - (void)changeFont:(id)sender de NSFontManager je sais quand l'on change de font depuis un fontPanel
J'ai dc fait :
- (void)changeFont:(id)sender<br />{<br /> NSFont *newFont = [sender selectedFont];<br />[standardFontField setStringValue:[NSString stringWithFormat:@"%@ %0.1f pt", [newFont fontName], [newFont pointSize]]];<br />}<br />
manque de pot j'ai tout un tas de truc imcompréhensible ds le textfield
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quel genre ?
Au passage, je pense que %.1f conviendra mieux que %0.1f
Chacha
Donc j'ai fais un -(void)windowDidLoad pour charger les checkbox, popup etc.. etc..
Donc quand je charge le textField : standardFontField avec le NSFont archivé en NSData :
Aucun pb d'affichage ds la view
J'ai donc une méthode - (void)changeFont:(id)sender envoyé à chaque fois qu'on change de font ds un NSFontPanel et lorsque je rempli mon standardTextField avec ça :
Le textField m'indique (ça a changé maintenant.. bizarre)... ben en fait maintenant il change plus du tout il reste sur la police que j'ai fixé au départ c'est à dire "Helvetica 12.0 pt"
Lisons la doc de changeFont:
informs responders of a font change. Generally this change is because the user changed the font either in the selection of a rich text field or in a whole plain text field. Any object that contains a font the user can change must respond to the changeFont: message by sending a convertFont: message back to sender (an NSFontManager object) for each font in the selection. For more information, see ?Responding to Font Changes?.
Be aware that selectedFont at this point may return unpredictable results. The font returned from this method may not be the last font selected, or there may be multiple fonts selected at the time changeFont: is called. The use of selectedFont from within changeFont: is strongly discouraged.
Il y a donc au moins deux problèmes dans ton code:
-tu n'appelles pas convertFont:
-tu utilises selectedFont:
Maismaismaisalors comment faire ?
Je te propose cela, qui si je ne me trompe pas doit être la bonne façon de faire
Voili voilà
Tiens-moi au courant
+
Chacha
ds le textField :
Ah ouais quand même !
Mais tout s'explique :
le "null" indique que ton objet [newFont newName] est null. Donc a priori, newFont est null.
En effet, en Objective-C, c'est pas très grave de travailler avec des pointeurs à nil. Si tu envoies à nil une méthode censée renvoyer un objet, tu récupère nil, c'est assez pratique pour ne pas alourdir la gestion d'erreurs.
Par contre, dès que ta méthode doit te renvoyer autre chose qu'un objet (genre un int, un float...) alors là c'est la cata : tu ne récupères pas 0, tu récupères n'importe quoi : le code est complètement incorrect, et surtout tu provoques des fautes mémoire (bel exemple, ici).
Donc dans ton cas, tout le problème vient du fait que newFont est nil. Maintenant, je ne sais pas pourquoi...
Faut chercher.
+
Chacha
Tout baigne donc
(et oui le oldFont été archivé en nil, donc désarchivé en nil ducoup newFont le devient à son tour ! merci le NSLog )
Merci chacha !