今天优化项目的时候发现一个需要优化的地方,就是一个scrollerview,上面有很多页面,滑动到最左侧时没有侧拉返回的功能,只有点击左上角返回按钮才能返回,这是因为scrollerview吸收了系统的侧拉手势,使手势不能传递下去,这个问题一直都存在但我一直也没太在意,到了今天才决定优化一下.
首先我在viewDidLoad中加入这句话.
[self.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
加上这句话后是可以在scrollerview上面侧拉返回了,但是不管当前页面是不是最左边都可以侧拉返回,我需要的是在最左侧的时候才可以侧拉返回,不是最左侧时就正常滑动.然后我看了看简书的个人界面发现它是对scrollview的scrollView.contentOffset.x进行监听,当scrollView.contentOffset.x小于某个值的时候直接pop,这个跟我想要也不太一样.默默抽上一根烟后,我突然想到了.代码如下:
/** 滑动结束后调用 */
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x <= 0) {
//滑动结束后如果scrollview是滑动了最左侧的话那么就让它可以侧拉返回
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}else
{
//否则就不能侧拉返回
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
}
}
好了,思路就是这样,如果有什么不对的地方希望大家能帮忙指出,谢谢大家