when iqkeyboardmanager appears ios cocoa-touch uitableview uiscrollview uitextview

ios - iqkeyboardmanager - Texto UITextView cortado cuando hay una gran cantidad de texto



move view when keyboard appears swift 4 (2)

Tengo una subclase UITableViewCell que contiene un UITextView donde el desplazamiento está desactivado. Configuré su marco así, en mi método de vista de diseño de celda de vista de tabla:

CGRect frame = self.bodyTextView.frame; CGSize size = self.bodyTextView.contentSize; frame.size = size; self.bodyTextView.frame = frame;

Esto ha funcionado bien durante un tiempo, pero me he dado cuenta de que en un caso en el que tengo una cantidad de texto especialmente grande, el texto se corta. Establecí el color de fondo del marco de vista de texto en naranja para poder verificar que el marco se estaba configurando correctamente. Aquí hay un ejemplo (solo muestro la parte inferior de la vista de texto):

El marco tiene el tamaño correcto basado en el texto (en este caso 1019 puntos), pero el texto se detiene antes de la parte inferior de la vista de texto. También he visto que el texto se corta en parte a lo largo de una línea (es decir, el texto de la última línea de texto visible se corta a la mitad en sentido horizontal). ¿Alguien tiene una idea de lo que está pasando aquí?

Algunos otros puntos:

  • Las vistas de texto funcionan bien para todas mis celdas de vista de tabla con contenido más corto.
  • Si aumento la cantidad de texto en el caso que se muestra arriba, la altura de la vista de texto aumenta, pero el texto sigue cortándose en el mismo lugar.

Use esto para obtener el tamaño del texto

// find the text width; so that btn width can be calculate CGSize textSize = [@"YOUR TEXT" sizeWithFont:[UIFont fontWithName:@"Arial" size:20.0] constrainedToSize:CGSizeMake(320.0f, 99999.0f) lineBreakMode:UILineBreakModeWordWrap];

y luego configure la altura usando esto como:

CGRect frame = self.bodyTextView.frame; frame.size = textSize; self.bodyTextView.frame = frame;

Espero que te ayude


De acuerdo con esto y respuestas similares, el problema podría ser que "el contentSize correcto solo está disponible después de que UITextView se haya agregado a la vista ... Antes de eso, es igual a frame.size"

Te sugiero que calcules la altura de una manera diferente, como -sizeWithFont: o -sizeTofit