UIScrollView中的UICollectionView:长按

时间:2016-07-13 22:14:31

标签: ios objective-c uiscrollview uilongpressgesturerecogni

我在UILongPressGestureRecognizer的子类中UICollectionView添加了UIScrollView。 (UIScrollView已被分页,因此有3个水平堆叠的UIViewController s。。

我的代码添加了UILongPressGestureRecognizer

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
longPress.delegate = self;
longPress.minimumPressDuration = 0.5;
longPress.delaysTouchesBegan = YES;
[self.collectionView addGestureRecognizer:longPress];

NSLog方法中的handleLongPress:。目前我按住UICollectionViewCell,它会突出显示,但长按不会被激活。我相信我的UIScrollView子类正在消耗长按而不会传递给UICollectionView。当我抬起手指时,会调用didSelectItemAtIndexPath:方法。

在我的UIScrollView子类中,我唯一的自定义如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer {
// This line enables the swipe to delete in the Messaging VC.
return ([otherGestureRecognizer.view.superview isKindOfClass:[UITableView class]]);
}

这样做是为了在我的UITableView中启用单元格扫描,UIScrollViewUICollectionView的一个页面。刷卡工作没有问题,我在UICollectionViewCellUICollectionView尝试了一些类似的检查,但还没有长时间注册。任何建议表示赞赏。

编辑:我已将长按添加到另一个fonts并且它正常运行,但该单元格从未显示突出显示/已选中状态。我想这是一个线索,为什么我无法解决这个长按手势。

1 个答案:

答案 0 :(得分:0)

我的问题是我在-init方法中添加了手势识别器。那没用。只需将代码移至-viewDidLoad即可解决问题。