Questo non è specifico del requisito qui ma aiuta a sincronizzare scrollView tra classi diverse.
Per sincronizzare scrollViews tra diverse classi, utilizzare NSNotificationCenter per osservare per una notifica particolare.
Quando scorrimento si verifica quindi entro il -scrollViewDidScroll: metodo delegato, utilizzare NSNotificationCenter di inviare la notifica (con userInfo contenuto come scrollView.contentOffset.x & scrollView.contentOffset.y) esempio:
-(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];
}
Registrati per questa notifica nella stessa classe o in qualsiasi altra classe ed esegui il metodo -setContentOffset: sullo scrollView/s che vuoi sincronizzare.
.
Esempio su Aggiunta Observer (sia in didLoad o init o dovunque adatto a voi nel maggior numero di classi a piacere):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNotification:)
name:@"scrollSync" object:nil];
.
esempio del metodo di selezione
-(void)handleNotification:(NSNotification *)sender
{
float newX = [[sender.userInfo objectForKey:@"offsetX"] floatValue];
float newY = [[sender.userInfo objectForKey:@"offsetY"] floatValue];
[myOtherScrollView setContentOffset:CGPointMake(newX,newY)];
}
grazie, funziona davvero grande! - (void) scrollViewDidScroll: (UIScrollView *) scrollView { if (scrollView == v1) {v2.contentOffset = v1.contentOffset; } else if (....... –