0

Ce n'est pas un bug spécifique, c'est plus de ne pas savoir comment faire quelque chose. J'ai un NSTextView et j'ai besoin de peindre l'arrière-plan de plages de texte spécifiques lorsque l'utilisateur clique sur une partie spécifique de la vue du texte. Je l'ai essayé, mais je viens d'obtenir un comportement erratique dans le sens que, parfois, le texte perd la couleur de premier plan ou l'arrière-plan ne couvre pas toute la gamme:Comment peindre l'arrière-plan d'une plage spécifique de texte dans NSTextView

NSLayoutManager *layoutManager = [myTextView layoutManager]; 
[layoutManager removeTemporaryAttribute:NSBackgroundColorAttributeName 
         forCharacterRange:range]; 
[[myTextView layoutManager] setTemporaryAttributes:attributes 
           forCharacterRange:range]; 

Par souci de simplicité suppose cette gamme est toujours chaîne valide (elle est dans mon environnement de test).

Répondre

2

Le code que vous avez posté me semble correct.

parfois texte perd au premier plan couleur

Est-ce la couleur de premier plan que vous utilisez un attribut temporaire? Notez que l'utilisation de -setTemporaryAttributes:forCharacterRange:définit (au lieu de ajoute) le dictionnaire temporaire d'attributs de texte pour la plage donnée (voir -addTemporaryAttributes:forCharacterRange: pour l'ajout).

ou l'arrière-plan ne couvre pas toute la gamme

Sans voir le reste de votre code, la seule chose que je peux suggérer, est en vous assurant que votre valeur range est correcte lorsque cela se produit. Essayez NSLog avant de l'utiliser et vérifiez le journal juste après avoir reproduit le problème.

Vous pouvez également vous assurer qu'après avoir défini la couleur d'arrière-plan dans les attributs temporaires, vous ne supprimez pas cet attribut d'une partie de cette plage ailleurs dans votre code.