我想检测用户何时在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];
答案 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];
...
}
如果有更多的内容,那么嵌套集合视图可以提供更多详细信息吗?