UICollectionView滑动

时间:2015-01-07 07:13:01

标签: ios uicollectionview uiswipegesturerecognizer

我想检测用户何时在collectionView中向左或向右滑动,其中一个单元占据整个屏幕宽度。是否可以不添加手势识别器。我尝试添加手势识别器,但只有在我们将collectionView的scrollEnabled属性设置为NO时才有效。

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeRight:)];
swipeRight.delegate = self;
swipeRight.numberOfTouchesRequired = 1;
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeLeft:)];
swipeLeft.delegate = self;
swipeLeft.numberOfTouchesRequired = 1;
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];

[self.collectionView addGestureRecognizer:swipeLeft];
[self.collectionView addGestureRecognizer:swipeRight];

4 个答案:

答案 0 :(得分:2)

也许您已禁用userInteraction。你检查过了吗?并将手势定义为类的属性。

self.collectionView.setUserInteractionEnabled=true;

答案 1 :(得分:1)

尝试覆盖scrollViewWillEndDragging:scrollView withVelocity:velocity targetContentOffset:targetContentOffset,因为集合视图继承自滚动视图。这样您就应该能够评估速度参数以确定方向。因此,您需要实现UIScrollViewDelegate协议。

答案 2 :(得分:1)

我向collectionView添加了滑动手势。 它工作正常。

就像斯蒂芬约翰逊所说的那样。 我想你的单元格有一个scrollView。 所以它会阻止手势。

答案 3 :(得分:0)

我不确定我是否完全理解您问题的背景。我看到你在集合视图中有一个集合视图。我将假设外部集合视图垂直滚动而内部视图水平滚动。您将需要在两个集合的手势识别器之间设置失败依赖关系。

//Data source for your outer collection view
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
                  cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
   ...
   UICollectionView* innerCollectionView = ...;

   [collectionView. panGestureRecognizer requireGestureRecognizerToFail:innerCollectionView. panGestureRecognizer];

   ...
}

如果有更多的内容,那么嵌套集合视图可以提供更多详细信息吗?