¿Cómo pintar el fondo del rango específico de texto en NSTextView
-
26-09-2019 - |
Pregunta
Esto no es un error específico, es más por no saber cómo hacer algo.
Tengo una NSTextView y necesito para pintar el fondo de rangos específicos de texto cuando el usuario hace clic en una parte específica de la vista de texto. He intentado esto, pero apenas consigo un comportamiento errático en el sentido de que a veces el texto pierde el color de primer plano o el fondo no abarca toda la gama:
NSLayoutManager *layoutManager = [myTextView layoutManager];
[layoutManager removeTemporaryAttribute:NSBackgroundColorAttributeName
forCharacterRange:range];
[[myTextView layoutManager] setTemporaryAttributes:attributes
forCharacterRange:range];
En aras de la simplicidad asuma ese rango es siempre una cadena válida (que está en mi entorno de pruebas).
Solución
El código que envió parece correcto para mí.
A veces el texto pierde el primer plano de color
Es este color de primer plano que está utilizando un atributo temporal? Tenga en cuenta que el uso de -setTemporaryAttributes:forCharacterRange:
juegos (en lugar de APPENDs a ) el texto temporal atributos Inglés para el rango dado (ver -addTemporaryAttributes:forCharacterRange:
para anexar).
o el fondo no hace lapso toda la gama
Sin ver el resto de su código lo único que puedo sugerir es asegurarse de que su valor range
es correcta cuando esto sucede. Trate NSLog
'ing bien antes de utilizarlo y comprobar el registro inmediatamente después de que haya reproducido el problema.
También puede ser que desee asegurarse de que después de ajustar el color de fondo en los atributos temporales que no estás eliminando ese atributo de una parte de esta gama de otras partes de su código.