0

我添加了一个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:中。目前我按住 a 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]]);
}

这样做是为了在 my 中启用单元格滑动UITableView,这是 my 的页面之一UIScrollView。刷卡没问题,我在这里尝试了许多类似的检查,UICollectionViewUICollectionViewCell还没有长按注册。任何建议表示赞赏。

编辑:我在另一个上添加了长按UICollectionView,它可以正常工作,但单元格从不显示突出显示/选择状态。我想这就是为什么我不能让这个长按手势触发的线索。

4

1 回答 1

0

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

于 2016-07-13T23:46:00.650 回答