UICollectionView的didSelectItemAtIndexPath仅在用两个手指选择单元格时调用

时间:2017-04-11 11:04:46

标签: ios objective-c

我使用单击手势识别器在视图顶部添加了UICollectionView。 CollectionView使用没有任何子视图的自定义单元格。代表的方法

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

仅在使用两个而不是一个手指选择单元格时或使用单个手指进行长按时调用。

我不小心重写

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

我通过删除某种视图或手势识别器来阅读所有类似的问题。

任何想法在这里有什么问题?

3 个答案:

答案 0 :(得分:3)

解决方案:集合视图已添加到包含单击手势识别器的视图顶部。这一些如何导致这种行为。我从集合视图父视图中删除了识别器,它可以工作。

随意解释为什么这是预期的行为。我认为最顶层的视图(CollectionView)在传递给后面的视图之前处理触摸。

答案 1 :(得分:1)

完全删除手势的另一种方法是将其设置为不取消视图中的触摸。

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(someSelector)];
tapRecognizer.cancelsTouchesInView = NO;
tapRecognizer.delaysTouchesBegan = NO;
tapRecognizer.delaysTouchesEnded = NO;
[self.view addGestureRecognizer:tapRecognizer];

答案 2 :(得分:0)

基于Christoph解决方案;我已经提出了这个代码,它删除了我父视图中的所有手势识别器。

"the bar 100"
"A large machine 200"