实现地图类app三级滑动效果 iOS 仿链家地图找房,仿百度地图打车,仿滴滴出行首页

 

https://gitcode.com/xiaoleiiOS/XLScrollView/overview

 

tableview实现下列方法,tableview和scrollview 能同时识别手势

/**
 同时识别多个手势

 @param gestureRecognizer gestureRecognizer description
 @param otherGestureRecognizer otherGestureRecognizer description
 @return return value description
 */
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

然后在下列方法里,分别判断 tableview和scrollview 的偏移量。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

 

 

 

原理主要是设置scrollview的 contentOffset 。分三级,contentOffsetMinY,contentOffsetMidY,contentOffsetMaxY。

目前上面demo有bug,就是tableview如果分页加载,一直往上拉时,tableview手势失效。无法加载下一页。

为解决这个问题只要子tableview滑动底部时手动将tableview往上滚动点就可以了

    //减速已经结束
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        
        if scrollView == self.scrollView {
            
       
        } else {
            let offsetY = scrollView.contentOffset.y
            let height = scrollView.frame.size.height
            let distanceFromBottom = scrollView.contentSize.height - offsetY
            if(distanceFromBottom <= height + 1) {
                scrollView.setContentOffset(CGPointMake(0, offsetY - 3), animated: true)
            }
        }
    }

 

posted @ 2024-06-13 12:05  黄增松  阅读(3)  评论(0编辑  收藏  举报