2016-07-07 2 views
1

UICollectionViewをスクロールするのにscrollToItemAtIndexPath:atScrollPosition:animatedを使用します。私はこの自動スクロールが起こっている間にいくつかの機能を無効にしてから、スクロールが終了すると再び有効にする必要があります。この問題は、すでに表示されているスクロールする必要があるスクロールが必要ない場合(たとえば、最後のセルとコレクションビューがすでに最後までスクロールされている場合など)に発生します。この場合、scrollViewDidEndDraggingでもscrollViewDidEndDeceleratingも呼ばれます。scrollToItemAtIndexPath:の後にUICollectionViewが実際にスクロールするかどうかを知る方法?

scrollToItemAtIndexPathが実際にスクロールするかどうかを知る方法はありますかUICollectionView

答えて

0

私は、スクロールビュー&をスクロールするたびに、最新のスクロールビューオフセット&のトラックの変更を保存することができると思います。

 func scrollViewDidScroll(scrollView: UIScrollView) { 

      let scrollOffset = scrollView.contentOffset.y; 

      if scrollOffset < (previousValue-100) || scrollOffset > (previousValue+100) 
       { 
       // Scrolled up or down with 100 points which you can change 
       previousValue = scrollOffset 
       } 
    } 
+0

私はそれに 'scrollViewDidEndDragging'を使うことができますが、スクロールが起動しなくても何をすべきでしょうか?私はそれを知る必要があります。 – Jaroslav

+0

これが便利かもしれないことを確認してください http://stackoverflow.com/questions/18649920/uicollectionview-current-visible-cell-index –

0

あなたはscrollToItemAtIndexPathscrollToItemAtIndexPathを呼び出す前に、セルのフレームに基づいてスクロールするかどうかを判断することができます。たとえば、あなただけのセルが(UICollectionViewScrollPositionNone)目に見えるようにしたい場合:

UICollectionViewLayoutAttributes* attrs = [collectionView layoutAttributesForItemAtIndexPath:indexPath]; 
CGRect frame = [collectionView convertRect:attrs.frame toView:self.view]; 
BOOL willScroll = !CGRectContainsRect(collectionView.frame, frame); 

それはscrollToItemAtIndexPathは、単にそれがスクロールするかどうかを教えてくれないことを残念です。

関連する問題