contentOffset se restablece en el encabezado ScrollView cuando se desplaza verticalmente en UITableView

Estoy haciendo uso de este código para alinear una carga de truckDayScrollViews (subclass de UIScrollView) horizontalmente en un UITableView, SUDaysForTruckView es solo un UILabel personalizado

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { if ([scrollView isKindOfClass:[SUDaysForTruckView class]]) { CGPoint offset=CGPointMake(scrollView.contentOffset.x, 0); for (TruckViewCell *cell in self.tableView.visibleCells) { cell.truckDayScrollView.contentOffset=offset; } self.headerView.contentOffset=offset; self.scrollViewPosition=offset; } else{ NSLog(@"Table view scrolling vertically: %f,%f",self.scrollViewPosition.x,self.scrollViewPosition.y); self.headerView.contentOffset=self.scrollViewPosition; } } 

La idea es que si la class de la vista de desplazamiento de desplazamiento forma parte de la celda (desplazándose horizontalmente), entonces actualice todas las vistas de desplazamiento, incluido el encabezado. Esto funciona muy bien.

Aunque cuando el tableView se desplaza verticalmente, el desplazamiento del contenido en la vista de desplazamiento del encabezado se restablece a 0,0.

¿Por qué es esto y hay una manera de solucionarlo? He intentado poner la línea

  self.headerView.contentOffset=self.scrollViewPosition; 

en tantos lugares cellForRow, el getter para self.headerView, etc. todo fue en vano.

La primera image muestra el desplazamiento horizontal y la alignment del encabezado, la segunda image muestra lo que sucede en el primer bit de desplazamiento vertical, los encabezados saltan fuera de alignment de inmediato.

Durante el desplazamiento horizontal, todo está alineado.

Durante el desplazamiento vertical, todo es caca.

Terminé anulando drawRect: obtengo el desplazamiento de contenido actual de scrollViews antes del desplazamiento vertical. Y luego necesitaba un poco más para detener todas mis vistas con un background negro.

 - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGContextRef ctx = UIGraphicsGetCurrentContext(); CGFloat white[] = {1, 1, 1, 1}; CGContextSetFillColor(ctx, white); CGContextAddRect(ctx, rect); CGContextFillPath(ctx); self.contentOffset=[self.scrollViewMaster scrollViewPosition]; }