我有一个带有多个Cell的UICollectionView(水平布局)。设备上只应显示一个Cell,4秒后下一个单元格淡入,旧的应该离开屏幕。这非常有效。我正在使用NSTimer进行自动动画制作。
我的问题是,当用户触摸(而非点击!)其中一个单元格时,我想停止此动画。所以我做了一个像这样的UISwipeGestureRecognizer:
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *collectionViewSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self.collectionView action:@selector(didTouchCell:)];
collectionViewSwipe.delegate = self;
collectionViewSwipe.numberOfTouchesRequired = 1;
[self.collectionView addGestureRecognizer:collectionViewSwipe];
}
- (void)didTouchCell: (UISwipeGestureRecognizer*) recognizer {
[self.collectionViewTimer invalidate];
}
但是“didTouchCell”从未被调用过......
答案 0 :(得分:2)
原来,CollectionView位于UIScrollView之上,所以我必须在我的Controller中实现这个方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return true;
}