獲取向右滑動(dòng)時(shí)和 UICollectionView的橫向滑動(dòng)沖突唬渗,在手勢(shì)按住 cell 之間的空隙是會(huì)出現(xiàn) 頁(yè)面返回,解決思路如下
1.設(shè)置 UICollectionView.backgroundColor 不能為空或者clearColor奋渔。
UICollectionView.backgroundColor = [UIColor whiteColor];
2.如果 UICollectionView裝在tableView中也要設(shè)置其 父視圖的backgroundColor 不能為空或者clearColor镊逝。
UITableView.backgroundColor = [UIColor whiteColor];
3.由于UICollectionView繼承自UIScrollView ,在UIScrollView做手勢(shì)返回判斷處理嫉鲸,添加分類 UIScrollView+TZGestureRecognizer.h,
分類直接放入項(xiàng)目即可生效撑蒜。
UIScrollView+TZGestureRecognizer.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIScrollView (TZGestureRecognizer)
@end
NS_ASSUME_NONNULL_END
UIScrollView+TZGestureRecognizer.m
#import "UIScrollView+TZGestureRecognizer.h"
@implementation UIScrollView (TZGestureRecognizer)
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer {
// 首先判斷otherGestureRecognizer是不是系統(tǒng)pop手勢(shì)
if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) {
// 再判斷系統(tǒng)手勢(shì)的state是began還是fail,
// 同時(shí)判斷scrollView的位置是不是正好在最左邊
if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && self.contentOffset.x == 0) {
return YES;
}
}
return NO;
}
@end
筆記記錄下玄渗,目前已知解決最為簡(jiǎn)便的方法座菠,有更好的解決方案請(qǐng)留言。