scrollViewWillEndDragging: withVelocity: targetContentOffset: funktioniert nicht an den Rändern einer UISCrollView

Ich versuche, eine benutzerdefinierte Registerkartenleiste zu implementieren, die scrollbar ist und bei jedem Element der Registerkartenleiste Seitenwechsel aufweist. Dafür benutze ich den Delegaten scrollViewWillEndDragging: withVelocity: targetContentOffset: der mit einem Problem perfekt funktioniert.

Wenn sich das contentOffset-Objekt in der Nähe des richtigen Objekts befindet, ändert sich das targetContentOffset-Objekt in den Versatz dieses Objekts. Gleiches gilt für die linke Seite.

Das Problem ist, wenn ich mich in der linken Hälfte des ersten und der rechten Hälfte des letzten Elements befinde (die Bildlaufansicht funktioniert horizontal), soll sie zu ContentOffset 0 und dem Inhaltsoffset des am weitesten rechts stehenden Elements (abzüglich der darauf befindlichen Elemente) gehen Bildschirm), aber nicht.

Ich habe mit dem Debugger nachgesehen und festgestellt, dass targetContentOffset-> x in der Tat 0 ist (im ersten Fall - links vom am weitesten links stehenden Element). Das Problem ist also, dass UIScrollView dort nicht scrollt. Ich bin verloren.

Hier ist mein implementierter Delegierter:

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

Hier ist das Diagramm, das erklärt, was ich tun möchte.

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

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

   <----|

   |_______________________________________|
              where it would stop

|_______________________________________|
        where i want it to stop

Antworten auf die Frage(5)

Ihre Antwort auf die Frage