2010-04-05 21 views
6

De forma predeterminada, el contentView de UITextView se puede desplazar cuando hay demasiado texto para caber en la vista de texto en función de su altura.UITextView cambia la altura en lugar de desplazamiento

Me gustaría desactivar esto y, en su lugar, actualizar la altura de la UITextView para que quepa en el texto. La razón por la que hago esto es porque estoy agregando el UITextView como una subvista de un UIScrollView que debe manejar el desplazamiento, al igual que en la aplicación de correo nativa (cuando ingresa texto, la vista completa se desplaza hacia arriba, no solo la vista de texto .

Alguien tiene algunas ideas/ha topado con el mismo problema antes

Respuesta

20

está muy simple hecho de esta manera:?

CGRect frame = textView.frame; 

frame.size = textView.contentSize; 

textView.frame = frame; 

esto debe ajustar la altura de la TextView para encajar adecuadamente todos su contenido.

+0

Eso es grande. Tuve que agregarle algunas cosas que publicaré en una nueva respuesta debido al formato del comentario. –

+0

Esto funciona bien en iOS5 pero por alguna razón en iOS4 el cursor sigue queriendo derivar fuera de los límites de la vista. –

+0

¡Gracias, hombre, me ha ahorrado mucho tiempo! – Mateus

9

Pocos l ittle cambia:

-(void)textViewDidChange:(UITextView *)textView { 

    CGFloat fontHeight = (textView.font.ascender - textView.font.descender) + 1; 

    CGRect newTextFrame = textView.frame; 
    newTextFrame.size = textView.contentSize; 
    newTextFrame.size.height = newTextFrame.size.height + fontHeight; 
    textView.frame = newTextFrame; 
} 

Al agregar la altura de la fuente se deja espacio para la caja de autocorrección cuando deletrea algo incorrectamente.

El UITextView también debe establecerse en no desplace:

[aTextView setScrollEnabled:NO]; 
+0

¿Cómo maneja esto desplazando la vista hacia el cursor? –

+0

Esta debería ser la respuesta aceptada. –

+0

También puede establecer textView.clipsToBounds = NO; para hacer que la caja de autocorrección no quede cortada. –

Cuestiones relacionadas