如何检测UICollectionView中最后一个或第一个单元格的滑动

时间:2015-11-17 13:32:05

标签: objective-c swift uiscrollview uicollectionview uicollectionviewcell

我有一行的集合视图,如果用户试图在第一个单元格上向右滑动或尝试在最后一个单元格上向左滑动,我想隐藏它。

只需添加左\右滑动手势即可。 通过将其添加到第一个和最后一个单元格(在cellForItemAtIndexPath方法中),我已经通过向上滑动手势进行管理。

任何想法?

2 个答案:

答案 0 :(得分:1)

获取滚动方向

@property (nonatomic) CGFloat lastContentOffset;
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (self.lastContentOffset > scrollView.contentOffset.x)
    {
        NSLog(@"Scrolling left");
    }
    else if (self.lastContentOffset < scrollView.contentOffset.x)
    {
        NSLog(@"Scrolling right");
    }

    self.lastContentOffset = scrollView.contentOffset.x;
}

答案 1 :(得分:1)

好的,我已经设法通过@Tejas答案和评论的组合来解决问题:

var lastContentOffset = CGFloat()
var scrollDir = UISwipeGestureRecognizerDirection.Left

func scrollViewDidScroll(scrollView: UIScrollView)
{
    if (self.lastContentOffset > scrollView.contentOffset.x)
    {
        self.scrollDir = UISwipeGestureRecognizerDirection.Left
    }
    else if (self.lastContentOffset < scrollView.contentOffset.x)
    {
        self.scrollDir = UISwipeGestureRecognizerDirection.Right
    }
    self.lastContentOffset = scrollView.contentOffset.x;
}

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool)
{
    if let indexPath = self.upperCollectionView?.indexPathsForVisibleItems()[0]
    {
        if indexPath.item == 0 && self.scrollDir == UISwipeGestureRecognizerDirection.Left
        {
           //hide the collection view
        }
    }
}