【发布时间】:2015-02-26 17:14:43
【问题描述】:
请帮我解决以下情况。
- Self.view(此处添加了滑动手势)
- 子视图中的 UicollectionView 对象(默认平移,滑动手势)
- 想要禁用 2 指滑动事件的滚动视图滚动/failCollectionViewPan 手势
- 表示如果执行 2 根手指滑动,集合视图将不会滚动
另一种方法是在使用 2 个手指时禁用集合视图滚动。在这里,我不想在两指滑动时滑动收藏视图。
我已经实现了这段代码,但它会减慢滚动速度。
[self.collectionView.panGestureRecognizer shouldBeRequiredToFailByGestureRecognizer:_swipeL];
然后我实现了下面的代码
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return YES;
}
现在,Swipe 和 Scroll 两者协同工作。
然后,我尝试了以下方式,但仍然没有解决。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]]){
if(gestureRecognizer.numberOfTouches==2){
if( [[otherGestureRecognizer.view class] isSubclassOfClass:[UITableViewCell class]] ||
[NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UITableViewCellScrollView"] ||
[NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UITableViewWrapperView"] || [NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UIScrollViewPanGestureRecognizer"] || [NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UIScrollViewPagingSwipeGestureRecognizer"])
{
NSLog(@"Allow&Disable %@", [otherGestureRecognizer description]);
[gestureRecognizer requireGestureRecognizerToFail:otherGestureRecognizer];
return NO;
}
}
}
return YES;
}
我还实现了以下 2 种方法来修复它但失败了。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
它可以通过这种方式修复 ScrollView,但同样的方式不适用于 UICollectionView。因为,集合视图的默认平移手势,它无法修改。以这种方式尝试时,应用程序崩溃了。
【问题讨论】:
标签: ios iphone uicollectionview uigesturerecognizer uiswipegesturerecognizer