2012-06-20 13 views
5

Tengo dos UIScrollViews, uno horizontal, uno vertical, ambos de dos páginas cada uno (como en, el horizontal tiene dos páginas de ancho y el vertical tiene dos páginas). La vista de desplazamiento horizontal está en la vertical. Intento imitar el diseño de Calcbot, donde puedes desplazarte hacia la izquierda/derecha para ver los botones y arriba/abajo para ver el historial.UIScrollView salta hacia abajo cuando se tocó por primera vez

Sin embargo, cuando se carga la vista, la vista de desplazamiento horizontal es aproximadamente 100 píxeles más alta de lo que debería ser. Luego, cuando lo toco y empiezo a moverlo un poco, salta/salta a la posición correcta y se queda allí. ¿Cómo lo hago aparecer correctamente desde el principio?

Aquí está mi código para viewDidLoad:

-(void)viewDidLoad { 
horizontalScrollView.pagingEnabled = YES; 
verticalScrollView.pagingEnabled = YES; 


horizontalScrollView.contentSize = CGSizeMake(horizontalScrollView.bounds.size.width * 2, horizontalScrollView.bounds.size.height); // 2 pages wide. 
verticalScrollView.contentSize = CGSizeMake(verticalScrollView.bounds.size.width, verticalScrollView.bounds.size.height * 2); 


horizontalScrollView.delegate = self; 
verticalScrollView.delegate = self; 




[verticalScrollView addSubview:horizontalScrollView]; 

[verticalScrollView setContentOffset:CGPointMake(0, 640)]; 

[self.view addSubview:verticalScrollView]; 

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

} 

Gracias.

Respuesta

4

de salto en UIScrollView suele ocurrir cuando se ha activado pagingEnabled = YES y la contentOffset se establece en una posición que es no en una página delimitada (divisible por bounds.size.height).

+0

Acabo de cambiar el contentOffset a 380 y funcionó. Gracias. –

+1

En un escenario ligeramente diferente, esto también solucionó mi problema de saltos. Tenía un UIScrollView solo verticalmente con pagingEnabled de algunas pruebas que estaba haciendo antes. Cada vez que me desplazaba hacia abajo y luego tocaba en cualquier lugar, volvía a saltar. Lo revirtió y todo estuvo bien. – patridge

+0

Hola @patridge ¿Puedes explicar tu comentario? Tengo un problema similar. – Mystery

0

Solo un pensamiento rápido porque actualmente estoy jugando con UIScrollView también. Puede intentar usar -(void)viewWillAppear:(BOOL)animated. P.ej. Configuro mi desplazamiento mínimo y máximo en ese método porque depende del tamaño del contenido que, por lo que leo, no se establece hasta que aparezca viewWillAppear.

+0

Gracias, pero acabo de probar esto, y no parece cambiar nada. –

0

Mover esta línea

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

En viewWillAppear en lugar de viewDidLoad, ver si funciona

+0

Desafortunadamente, todavía parece más alto de lo que debería ser. Gracias por la sugerencia, sin embargo. –

Cuestiones relacionadas