scrollViewWillEndDragging: withVelocity: targetContentOffset: nie działa na krawędziach UISCrollView

Usiłuję zaimplementować niestandardowy pasek kart, który jest przewijany i ma stronicowanie na każdym pasku kart. Do tego używam delegata scrollViewWillEndDragging: withVelocity: targetContentOffset: który działa idealnie z jednym problemem.

Sposób, w jaki działa moje stronicowanie, jeśli contentOffset jest blisko właściwego elementu, to zmienna targetContentOffset zmienia się na przesunięcie tego elementu. To samo dotyczy lewej strony.

Problem polega na tym, że gdy znajduję się po lewej stronie pierwszego elementu i po prawej stronie ostatniego (widok przewijania działa poziomo), powinien przejść do ContentOffset 0 i przesunięcia zawartości skrajnej prawej pozycji (minus te na stronie ekran), ale tak nie jest.

Sprawdziłem przy pomocy debuggera, a targetContentOffset-> x jest rzeczywiście 0 (w pierwszym przypadku - po lewej stronie lewego elementu). Problem polega na tym, że UIScrollView nie jest tam przewijany. Zgubiłem się.

Oto mój wdrożony delegat:

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

Oto diagram wyjaśniający, co chcę zrobić.

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

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

   <----|

   |_______________________________________|
              where it would stop

|_______________________________________|
        where i want it to stop

questionAnswers(5)

yourAnswerToTheQuestion