先说下,产生冲突的背景.我的主界面是个UINavigationController,我给导航控制器添加了个UIScreenEdgePanGestureRecognizer,设置滑动边界为左边界.代码如下:
panGes = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(onSlideEdgeGes:)];
[navigationController.view addGestureRecognizer:panGes];
panGes.edges = UIRectEdgeLeft;
然后我在主界面添加了个UIScrollView,ScrollView自带滑动手势会屏蔽panGes的手势.解决方法:通过设置手势重叠的时候的触发优先级()
CGRect headViewRect = CGRectMake(0, 0, CGRectGetWidth(APPRECT),CGRectGetHeight(self.view.frame) - FOOTERVIEW_HEIGHT);
headScrollView = (CustomScrollView *)initScrollViewWithClass([CustomScrollView class],self.view, headViewRect, self, CGSizeMake(deviceArrs.count * CGRectGetWidth(headScrollView.frame), CGRectGetHeight(headScrollView.frame)), YES);
headScrollView.pagingEnabled = YES;
headScrollView.bounces = FALSE;
headScrollView.showsVerticalScrollIndicator = FALSE;
关键代码:headScrollView的手势和panges重合时panges优先
[headScrollView.panGestureRecognizer requireGestureRecognizerToFail:appDelegate.rootNavigtionManager.panGes];