Esto no es específico del requisito aquí pero ayuda a sincronizar scrollViews entre diferentes clases.
Para sincronizar scrollViews entre diferentes clases, use NSNotificationCenter para observar una notificación en particular.
Cuando desplazamiento se produce entonces dentro de la -scrollViewDidScroll: método delegado, utilice NSNotificationCenter para publicar la notificación (con userInfo contenidos como scrollView.contentOffset.x & scrollView.contentOffset.y) Ejemplo:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc]init];
[userInfo setObject:[NSNumber numberWithFloat:scrollView.contentOffset.x]
forKey:@"offsetX"];
[userInfo setObject:[NSNumber numberWithFloat:scrollView.contentOffset.y]
forKey:@"offsetY"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"scrollSync"
object:nil
userInfo:userInfo];
}
Regístrese para esta notificación en la misma clase o en cualquier otra clase y realice el método -setContentOffset: en los scrollView/s que desea sincronizar.
.
Ejemplo de adición de Observador (ya sea en didLoad o init o en cualquier lugar adecuado para usted en tantas clases como desee):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNotification:)
name:@"scrollSync" object:nil];
.
Ejemplo del Método de selección
-(void)handleNotification:(NSNotification *)sender
{
float newX = [[sender.userInfo objectForKey:@"offsetX"] floatValue];
float newY = [[sender.userInfo objectForKey:@"offsetY"] floatValue];
[myOtherScrollView setContentOffset:CGPointMake(newX,newY)];
}
gracias, funciona muy bien! - (void) scrollViewDidScroll: (UIScrollView *) scrollView { if (scrollView == v1) {v2.contentOffset = v1.contentOffset; } else if (....... –