我在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
中启用单元格扫描,UIScrollView
是UICollectionView
的一个页面。刷卡工作没有问题,我在UICollectionViewCell
和UICollectionView
尝试了一些类似的检查,但还没有长时间注册。任何建议表示赞赏。
编辑:我已将长按添加到另一个fonts
并且它正常运行,但该单元格从未显示突出显示/已选中状态。我想这是一个线索,为什么我无法解决这个长按手势。
答案 0 :(得分:0)
我的问题是我在-init
方法中添加了手势识别器。那没用。只需将代码移至-viewDidLoad
即可解决问题。