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).

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top