/ / iOS: ¿UITextView no dibuja texto? - iphone, objectivo-c, ios, uiview, uitextview

iOS - UITextView no dibuja texto? - iphone, object-c, ios, uiview, uitextview

Tengo un UITextView en la pantalla. Este UITextView está cubierto por una UIView.

Cuando configuro el texto para este UITextView, si el TextView no es visible (UIView lo está cubriendo), no dibuja el texto.

Entonces, cuando elimino la vista que cubre mi textView, no hay texto en mi textView. Si intento desplazar la vista de texto, el texto aparecerá de repente.

¿alguna forma de obligar a UITextView a dibujar el texto en todo momento? (Esto solo ocurre cuando tengo demasiado texto (alrededor de 1000 caracteres))

Intenté llamar [textView setNeedsDisplay], antes y después de configurar "texto" y no solucionó el problema

Respuestas

1 para la respuesta № 1

La mayoría de las cosas en el sistema no se mostrarán cuando estén ocultas, lo que sería un desperdicio de recursos.

El enfoque correcto es llamar a setNeedsDisplay: en la UITextView DESPUÉS de que no se haya ocultado, debería aparecer inmediatamente.


4 para la respuesta № 2

Tengo el mismo problema, mi UITextView nodibujar texto hasta que intente desplazarlo o su padre. [textView setNeedsDisplay] no funciona para mí. Finalmente, aumento textView 1px y el problema se ha ido.

CGRect frame = textView.frame;
frame.size.height += 1;
textView.frame = frame;

Sé que este método es feo pero funciona.


0 para la respuesta № 3

El límite para el número de caracteres en un UITextView parece estar relativamente bajo (mira la publicación aquí)

El póster en el enlace que publiqué sugiere poner tu contenido en un UIWebView, que puede manejar una gran cantidad de texto.


0 para la respuesta № 4

El mismo problema. Tenemos una vista de texto que está configurada y puesta en la vista mientras está oculta o fuera de pantalla. Muy probablemente debido a la optimización de Apple UITextView para que no haga el diseño y el dibujo a menos que esté en pantalla y sea visible.

Vocación setNeedsDisplay no funciona debido a las optimizaciones. setNeedsDisplay se llama con bastante frecuencia, así que imagina un UITextView haciendo maquetación y dibujo con bastante frecuencia? Por lo tanto, la solución anterior es fea pero funciona: agregue un píxel al marco que activará el UITextView para volver a diseñar y volver a dibujar. Fuimos con esta solución.


0 para la respuesta № 5

Como UITextView es una subclase de UIScrollView, hice algo como esto:

CGPoint offset = self.textView.contentOffset;
offset.y++;
[self.textView setContentOffset:offset];
offset.y--;
[self.textView setContentOffset:offset];

lo mismo que @ Tùng Đỗ sin cambiar el marco ... todavía se ve feo.