scrollViewWillEndDragging: withVelocity: targetContentOffset: no funciona en los bordes de un UISCrollView

Estoy tratando de implementar una barra de pestañas personalizada que es desplazable y tiene paginación en cada elemento de la barra de pestañas. Para eso estoy usando el delegado scrollViewWillEndDragging: withVelocity: targetContentOffset: que funciona perfectamente con un problema.

La forma en que funciona mi paginación es que, si contentOffset está cerca del elemento correcto, targetContentOffset cambia al desplazamiento de ese elemento. Lo mismo para el lado izquierdo.

El problema es que siempre que esté en la mitad izquierda del primer elemento y en el derecho del último (la vista de desplazamiento funciona horizontalmente) se supone que debe ir a ContentOffset 0 y el desplazamiento de contenido del elemento más a la derecha (menos los que están en pantalla), pero no lo hace.

Verifiqué con el depurador y targetContentOffset-> x es de hecho 0 (en el primer caso, a la izquierda del elemento que está más a la izquierda). Entonces el problema es que el UIScrollView no se desplaza allí. Estoy perdido.

Aquí está mi delegado implementado:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
                 withVelocity:(CGPoint)velocity
          targetContentOffset:(inout CGPoint *)targetContentOffset{
     NSInteger index = lrintf(targetContentOffset->x/self.tabWidth);
     targetContentOffset->x = index * self.tabWidth;
}

Aquí está el diagrama explicando lo que quiero hacer.

|-------|-------|-------|-------|-------|-------|-------|
|       |       |       |       |       |       |       |
|       |       |       |       |       |       |       |
|_______|_______|_______|_______|_______|_______|_______|

        |_______________________________________|
         where it is and i scroll it to the left

   <----|

   |_______________________________________|
              where it would stop

|_______________________________________|
        where i want it to stop

Respuestas a la pregunta(5)

Su respuesta a la pregunta