2010-07-22 13 views
7

Estoy experimentando algo considerado un error en mi situación. Probablemente esto no es un error sino una característica;).UITextView dentro de UIScrollView problema de desplazamiento

Aquí es mi caso:

cargo un UIScrollView con mi contenido. Una parte de mi contenido se carga como sincronizado una vez que la vista ya está cargada. Esto funciona genial y sin problemas. Sin embargo, algunos de estos controles son controles UITextView. Una vez que establezco el contenido (propiedad del texto) de estos controles después de verDidLoad, mi UIScrollView se desplaza hacia abajo hasta el último UITextView que se configuró. Quiero evitar esto y quiero que UIScrollView mantenga su posición superior desplazada.

En resumen: Si configuro la propiedad Text en el método viewDidLoad, no se produce desplazamiento. Si configuro la propiedad Text en el UITextView después del método viewDidLoad (porque cargué los datos como asincrónicos), UIScrollView se desplazará al último UITextView que se configuró. Quiero prevenir este pergamino

¿Cómo logro esto? Tengo la sensación de que esta es solo una propiedad que está mal pero parece que no puedo encontrarla.

Gracias de antemano.

EDIT:

He tratado de establecer la propiedad "scrollEnabled" a NO antes de ajustar los valores y después SÍ, pero esto no tuvo ningún efecto. ScrollView se desplazará cuando se establezca la propiedad de texto de UITextView.

Respuesta

6

me ha solucionado el problema con una solución alternativa:

fijo el tamaño de contenido de vista de desplazamiento para algo pequeño, como 320 x 300 o cualquiera que sea la altura del marco ScrollView está, entonces hice mi trabajo, a continuación, poner el tamaño del contenido vuelve a la normalidad

Esto evita el desplazamiento mientras se cargan los datos y lo habilita tan pronto como finaliza la carga.

+0

o simplemente configura el contenido requerido DESPUÉS de configurar todos los textos ... gracias por ayudarme a arreglar esto – thgc

5

esto no cambiaría el problema de desplazamiento, pero tal vez hacer que "oculta" para el usuario:

yourTextView.text = @"Eat more bananas!"; 
yourScrollView.contentOffset = CGPointMake(0.0, 0.0); 

Algunos fragmentos de su código ayudarían a enfrentar el problema más específico.

EDIT: O tratar de añadir los UITextViews a un UIView, a continuación, añadir el UIView a la UIScrollView. Asegúrese de que UIScrollView contentSize sea el mismo que el tamaño de UIView.

+1

Gracias por dar la solución y la he implementado con éxito. – user574089

+0

¡Gran solución, creo que es la más inteligente y universal! ¡Puedo votar esta como la respuesta aceptada! – tong

1

Esto funcionó para mí también: p pero tuve que establecer la altura en algo menos de 300 (en mi caso, acabo de usar 10).

Básicamente la idea es hacer que la vista de texto no sea parte del área visible de UIScrollView mientras está cambiando el texto de UITextView.

Cuestiones relacionadas