scrollViewWillEndDragging: withVelocity: targetContentOffset: não funciona nas bordas de um UISCrollView

Eu estou tentando implementar uma barra de guia personalizada que é rolável e tem paginação em cada item da barra de guia. Para isso eu estou usando o delegate scrollViewWillEndDragging: withVelocity: targetContentOffset: que funciona perfeitamente com um problema.

A maneira como minha paginação funciona é, se o contentOffset estiver perto do item correto, o targetContentOffset mudará para o deslocamento desse item. Mesma coisa para o lado esquerdo.

O problema é que, sempre que estou na metade esquerda do primeiro item e à direita do último (a visualização de rolagem funciona horizontalmente), ele deve ir para o ContentOffset 0 e o deslocamento de conteúdo do item mais à direita (menos os do tela), mas isso não acontece.

Eu verifiquei com o depurador e o targetContentOffset-> x é de fato 0 (no primeiro caso - à esquerda do item mais à esquerda). Então o problema é o UIScrollView não rolar lá. Estou perdido.

Aqui está o meu 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;
}

Aqui está o diagrama explicando o que eu quero fazer.

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

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

   <----|

   |_______________________________________|
              where it would stop

|_______________________________________|
        where i want it to stop

questionAnswers(5)

yourAnswerToTheQuestion