Texte dans NSFormcell

tabliertablier Membre
11:48 modifié dans API AppKit #1
En utilisant SDK 10.2.8, je compile la méthode ci-dessous qui me donne le warning:
'NSFormCell' may not respond to '-setPlaceholderAttributedString:'

- (void)Place_Texte:(NSForm *)LaForme Index:(int)Indx texte:(NSString *)Montexte
{
NSFormCell *LaCellule ;

LaCellule = [LaForme cellAtIndex:Indx] ;             // pointeur de NSFormcell
[LaCellule setPlaceholderAttributedString:Montexte] ; // mise du texte en place
}


J'ai trouvé que cela ne doit marcher qu'avec SDK 10.4! Comment fait-on si l'on veut que cela marche sous 10.2 et suivant? J'ai bien trouvé NSTextFieldCell, mais je n'arrive pas à  avoir un pointeur là  dessus!

Réponses

  • BruBru Membre
    11:48 modifié #2
    Les placeHolder Strings ne sont apparues que dans 10.3 (pour NSTextFieldCell) et 10.4 (pour NSFormCell).

    Ces placeHolder Strings sont des chaà®nes qui apparaissent en grisé dans la cellule d'un contrôle texte quand cette dernière est vide et n'a pas le focus. L'exemple en est le champ de recherche dans Safari qui affiche le nom du moteur de recherche ("Google").

    Puisque cette méthode est d'implémentation récente, tu ne peux pas l'utiliser dans des systèmes antérieure (à  moins de faire une sous-classe de NSFormCell, et de gérer toi même l'affichage de la placeHolder Strings). Pour moi, le mieux est de d'ignorer : ceux qui sont en 10.3 ne verront rien, les autres en 10.4 bénéficieront de cette amélioration.

    Tu peux toujours tester l'existance de cette méthode pour avoir du code compatible avec plusieurs systèmes :
    <br />- (void)Place_Texte:(NSForm *)LaForme Index:(int)Indx texte:(NSString *)Montexte<br />{<br />&nbsp;  NSFormCell *LaCellule ;<br />&nbsp;  <br />&nbsp;  LaCellule = [LaForme cellAtIndex:Indx] ;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // pointeur de NSFormcell<br />&nbsp;  if ([LaCellule respondsToSelector:@selector(setPlaceholderAttributedString:)])<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp;  [LaCellule setPlaceholderAttributedString:Montexte] ;&nbsp;  // mise du texte en place<br />&nbsp; &nbsp; }<br />}<br />
    


    .
Connectez-vous ou Inscrivez-vous pour répondre.