2010-01-30 14 views
5

Tengo un problema extraño con setContentOffset que no parece ser capaz de resolver: Estoy tratando de crear una vista de desplazamiento "infinito", por lo que me gustaría restablecer el contenido desplazamiento en una posición determinada. Con el siguiente código setContentOffset se llamará a x = 160px. Si arrastrar el desplazamiento ver mi registro es el siguiente:iPhone UIScrollView/setContentOffset rareza

desplazamiento: 158

desplazamiento: 159

desplazamiento: 160

Offset: 80

desplazamiento: 160

Lo que sucede es que mi setContentOffset (a 80) se realiza, cuando sigo arrastrando UIScroll La vista parece haberse olvidado de eso y continúa en 160. Aún más raro: Cuando configuro animada: SÍ, funciona. Tal vez un problema de tiempo? Cuando llamo a setContentOffset desde scrollViewDidScroll, se volverá a llamar a scrollViewDidScroll.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
NSInteger tileNo = floor(scrollView.contentOffset.x/80); 
NSLog(@"offset: %f, tile: %d, lastTile: %d", scrollView.contentOffset.x, tileNo, lastTileNo); 

if (tileNo > lastTileNo) { 
     [scrollView setContentOffset:CGPointMake(80, 0) animated:NO]; 
} 

lastTileNo = tileNo; 

}

Gracias por ayudarme, Stephan

Respuesta

-1

El problema es que el UIScrollView no tiene fin por diseño. Tiene un límite estricto de su tamaño de contenido. ¿Estás seguro de que CGFLOAT_MAX (340282346638528859811704183484516925440) es demasiado pequeño para tu vista de desplazamiento?

+0

puede hacer que sea "interminable" revolviendo alrededor de sus subvistas y seguir restableciendo el offset de contenido, funciona. – bibac

+0

Obviamente no leyó la pregunta y no ha contribuido con nada. –

3

Acabo de recibir esta respuesta de sombody en Apple: "Este es un problema conocido y se solucionará en una versión futura del iPhone SDK. Si puede probarlo, en realidad debería encontrar que está arreglado en el actual beta. Si todavía tiene problemas con eso, presente un nuevo error ".

0

Mismo problema aquí.

Es incoherente llamar a setContentOffset: dentro de scrollViewDidScroll :, actualiza el contentOffset de tableview solo hasta la siguiente llamada de scrollViewDidScroll :.

Me di cuenta de que este error solo ocurre cuando el usuario no está arrastrando la tabla vista (solo desacelera).

En mi caso, la actualización solo cuando el usuario está arrastrando solucionó el problema.

Espero que ayude.

Cuestiones relacionadas