实现地图类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 @   黄增松  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示