Texto grande cortado en UITextView que está dentro de UIScrollView

Tengo un problema grave que parece que no puedo solucionar y me está volviendo loco los últimos dos días. He buscado por todas partes y no puedo encontrar una solución, a pesar de que he intentado con muchos.

Tengo una UITextView dentro de UIScrollView . Puedo cambiar el tamaño del UITextView forma dinámica dentro de la vista de desplazamiento para mostrar el texto. Pero cuando el UITextView contiene texto muy grande, se corta cuando me desplazo casi hasta el final. Sin embargo, el marco de UIScrollView todavía se está dimensionando correctamente.

Leí estas publicaciones: esta y muchas similares.

UIScrollview y UITextview se crean en xib utilizando AutoLayout.

Aquí está mi código actual y una captura de pantalla, ya que puede ver que el lugar en blanco en la captura de pantalla debe llenarse con texto. por favor ayuda.

enter image description here

 - (void)viewDidAppear:(BOOL)animated { CGRect frame = self.longDescField.frame; frame.size.height = self.longDescField.contentSize.height; self.longDescField.frame = frame; self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.longDescField.contentSize.height + 200); self.scrollView.scrollEnabled = YES; [self.scrollView flashScrollIndicators]; } 

Este problema existe desde iOS 7 y todavía está presente en iOS 10.3.

Sin embargo, no pude mantener el comportamiento de desplazamiento normal al configurar scrollEnabled = NO antes del cambio de tamaño, como se recomienda @igz. En lugar de eso, cambié el desplazamiento on off después del cambio de tamaño

 // Resize text view here textView.scrollEnabled = NO; textView.scrollEnabled = YES; 

Esto obligó a que el texto cortado se procesara correctamente.

Gracias a todos por su ayuda. Esto es lo que finalmente funcionó para mí en iOS7.

Tuve que deshabilitar el diseño automático para este xib en particular.

Luego hizo lo siguiente:

 [textView setScrollEnabled:YES]; [textView setText:text]; [textView sizeToFit]; [textView setScrollEnabled:NO]; 

Para mí, la solución fue poner sizeToFit después de personalizar el textView

 [self.yourTextView sizeToFit]; 

Esto debería ser lo último que haga al manipular la vista de texto, no debería ser antes de rellenar el texto de contenido.

Definitivamente iOS7. Tenía este mismo problema que se aplica a todas las UITextViews que se redimensionaron, tanto xib como el código generado. Encontré que el textContainer.size necesitaba ajustarse después de que se modificó el marco de UITextView.

Creé este código de categoría para ajustar el textContainer.size, pero también parece necesitar un ajuste después de configurar el valor del texto, así que tengo que llamar a adjustAfterFrameChange después de que cualquier texto cambie si no se siguen al establecer el tamaño del marco. Este código supone que UITextView no está haciendo nada con setFrame: así que quítese setFrame: y llame a adjustAfterFrameChange manualmente si quiere evitar ese riesgo

Editar: cambiado

 self.textContainer.size = self.frame.size; // fix for cut off text 

a

 self.textContainer.size = self.contentSize; // fix for cut off text 

 @interface UITextView(Extras) - (void)adjustAfterFrameChange; @end @implementation UITextView(Extras) - (void)adjustAfterFrameChange { #if defined(__IPHONE_7_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0 if ([self respondsToSelector:@selector(textContainer)]) self.textContainer.size = self.contentSize; // fix for cut off text #endif } - (void)setFrame:(CGRect)frame { [super setFrame:frame]; [self adjustAfterFrameChange]; } @end 

Prueba esto

 [self.textView setContentInset:UIEdgeInsetsMake(-8.0, 0, -8.0, 0)]; 

Funciona para la visualización de texto cortado en UITextView.

Tuve un problema similar, en el que el texto largo se cortaba después de cambiar el tamaño de la vista de texto. Desactivar el desplazamiento habilitado antes de que el cambio de tamaño pareciera solucionarlo. Claro parece un error de IOS 7.

Este problema se puede solucionar estableciendo la propiedad de diseño contigua en falso.

 textView.layoutManager.allowsNonContiguousLayout = false 

Aunque la documentación dice que el valor predeterminado es falso, en realidad está configurado en verdadero para una UITextView.

Tuvimos un problema como este con el lanzamiento de iOS7. Cuando llamamos a setText, que agregó una nueva línea (o líneas) a nuestro UITextView, la vista de texto no estaba usando la nueva altura correcta para su redibujado. El setNeedsDisplay, setNeedsLayout, redibujar capas, volver a dibujar toda la vista, etc., todo no funcionó. Finalmente forzamos una pérdida y ganancia de foco:

 [textView resignFirstResponder]; [textView becomeFirstResponder]; 

Esto forzó el recálculo de la altura y el correcto redibujado. Afortunadamente no hace que el teclado aparezca, pero vale la pena realizar pruebas de regresión en las versiones de iOS compatibles con su aplicación.

Esto sucede todo el camino, también en Interface Builder.

Cuando se selecciona la vista de texto, en el Inspector de Utilidades desmarque la opción Muestra el Indicador Vertical. El texto recortado aparece ahora.

Tuvimos el mismo problema, excepto que la mitad izquierda o la mitad derecha de UITextView estaban siendo cortadas. Sucedió tanto en iOS 7 como en iOS 6, en una variedad de teléfonos. Vocación:

 myTextView.scrollEnabled = NO; 

en vista, WillAppear solucionó el problema.

Tengo el mismo problema para una vista de texto (sin una vista de desplazamiento). Resolvió esto (Xcode 7.3.1, iOS 9.3) simplemente desmarcando “Desplazamiento Habilitado” en el Inspector de Atributos.

Solo prueba esto.

En IOS 8 y Xcode 6.3,

 textview.scrollEnabled=YES; [self.textview setContentInset:UIEdgeInsetsMake(-10.0, 0, -5.0, 0)]; 

Puedo estar equivocado, pero no entiendo tu problema a fondo, pero ¿para qué sirve usar UIScrollView ya que con la clase UITextView se implementa el comportamiento de una región de texto de líneas múltiples desplazables?

Debería descartar UIScrollView.

Ninguna de estas respuestas funcionó para mí.

Estaba engañando con el guión gráfico y de alguna manera está funcionando ahora. Todavía se ve mal en el guión gráfico, pero en el dispositivo ahora se muestra bien.

Hice varias cosas , incluso alternar muchas de las opciones para el campo de texto.

Creo que lo que me solucionó fue hacer la vista más grande, construirla y volverla a tener el tamaño correcto nuevamente .

Mis disculpas por una respuesta vaga e incierta, pero tal vez ayuda. Este proyecto fue escrito originalmente para iOS 5, y la vista de texto no se ha visto afectada desde entonces.

Estoy enfrentando la misma situación. Tengo que deshabilitar el desplazamiento de UITextView y al hacerlo, la última línea se clipa. Aquí está mi solución:

 //In the UITextView subClass, override "gestureRecognizerShouldBegin" and let the scrolling of UITextView remain on. -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && gestureRecognizer.view == self){ return NO; } return [super gestureRecognizerShouldBegin:gestureRecognizer]; } 

En Swift solucioné este problema simplemente configurando el textContainerInset de mi UITextView :

 textView.textContainerInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 50.0, right: 0.0)