今天優化項目的時候發現一個需要優化的地方,就是一個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;
}
}
}
好了,思路就是這樣,如果有什么不對的地方希望大家能幫忙指出,謝謝大家