UIScrollView delegate method scrollViewWillEndDragging: doesn't work?

I am trying to use a method scrollViewWillEndDragging:to collapse my own pyc UICollectionView with a preview on both sides, similar to an App Store app. However, using the code below, scrollview will scroll to the desired rectangle if I stop dragging without inertia (i.e. just lift my finger). If I clicked with any amount of inertia, the method is still called, but scrollview does not scroll the desired rectangle, does it just continue to scroll?

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
                     withVelocity:(CGPoint)velocity
              targetContentOffset:(inout CGPoint *)targetContentOffset
{
    int itemWidth = 280;

    MyCollectionView *collectionView = (MyIndexedCollectionView *) scrollView;

    int totalPages = [self.colorArray[collectionView.index] count];
    int currentPage;
    int nextPage;

    if (lastContentOffset < (int)scrollView.contentOffset.x)
    {
        // moved right
        NSLog(@"scrolling right");
        double currentPageOffset = ceil((scrollView.contentSize.width - 
                                                 scrollView.contentOffset.x) / itemWidth);
        currentPage = totalPages - currentPageOffset;
        nextPage = currentPage >= totalPages ? totalPages : currentPage + 1;
    }
    else if (lastContentOffset > (int)scrollView.contentOffset.x)
    {
        // moved left
        NSLog(@"scrolling left");
        double currentPageOffset = floor((scrollView.contentSize.width - 
                                              scrollView.contentOffset.x) / itemWidth);
        currentPage = totalPages - currentPageOffset;
        nextPage = currentPage <= 0 ? 0 : currentPage - 1;
    }

    int xOffset = (nextPage * itemWidth);
    int nextOffsetPage = (totalPages - ((scrollView.contentSize.width - xOffset) /
                                                                       itemWidth)) + 1;

    [scrollView scrollRectToVisible:CGRectMake(xOffset,
                                           0,
                                           collectionView.bounds.size.width,
                                           collectionView.bounds.size.height)
                                           animated:YES];
}

scrollViewWillBeginDecelerating: , ? , scrollViewWillEndDragging:, :

  • , ,
  • scrollViewWillBeginDecelerating: , , - .

, , ?

+4
1

DOH!! , targetContentOffset, , , scrollToRectToVisible: ala:

*targetContentOffset = CGPointMake(myTargetOffset, targetContentOffset->y);

RTFM:)

+1

All Articles