「iOS」解决Charts中图表手势与UIScrollView滑动手势冲突

问题:Charts中图表手势与UIScrollView滑动手势冲突

我在UITableView(UIScrollView)中添加了PieChartView后出现手势混乱。如旋转图表的圆环时,UITableView(UIScrollView)也跟着跑了,而圆环却不转了。🤡

解决思路:获取当前点击操作及位置,当用户点的是图表就将UITableView(UIScrollView)的isScrollEnabled置为false
实现代码:

在发生冲突的viewController或view中添加extension
如果你单独封装了一个图表的view,那么就在那个view里override hitTest方法就行

extension UITableView{
    
    /// 重写tableview hittest方法
    /// 1、遍历subviews
    /// 2、查找手势冲突的view
    /// 3、将当前点击Point转换到所要解决手势冲突的view上
    /// 4、判断当前点击是否在这个view上
    /// 5、修改冲突手势
    /// 6、否则返回原点击事件
    open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        //  我的图表是添加在tableview的headerview上,所以直接取到headerview即可
        let headerView = self.tableHeaderView
        if let tmpHeaderView = headerView{
            for subview in tmpHeaderView.subviews{
                if subview is XXXChartView{
                    let xxxChartView = subview as? XXXChartView
                    if let tmpChartView = xxxChartView{
                        let pieChartView = tmpChartView.pieChartView
                        let newPoint = tmpHeaderView.convert(point, to: pieChartView)
                        //这个方法是关键,获取是否点到了你的图表
                        let isHit = pieChartView.point(inside: newPoint, with: event)
                        //点击到了图表则不可滚动
                        self.isScrollEnabled = !isHit
                    }
                }
            }
        }
        return super.hitTest(point, with: event)
    }
}

至此问题完美解决。
需要注意的是:图表的大小和setExtraOffsets方法需要你仔细设置一下,让用户感觉到只有点到图表才会旋转,而不是空白处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,796评论 1 32
  • 今天风很大,下班搭了个同事的顺风车。回到家紫琳在做作业,我走过去看了看,正在做语文新世纪,看她写的认真,我...
    2018一米阳光阅读 695评论 0 0
  • 一,我做了什么? 1,10.10—11.11日,参加GALA训练营10期馒头,认识了两个面条,一位是简书签约作家,...
    清清是颗小太阳阅读 1,443评论 6 4
  • 一、性能优化 ANR,内存溢出,内存抖动,内存泄漏,UI卡顿,冷启动优化(https://www.jianshu....
    潇萧之炎阅读 4,200评论 0 0
  • 这个周末被拼多多的文章和消息都淹没了。 周末读了一篇好文章和一本好书。人类的宗教,探讨宗教的价值。在当时环境下有什...
    思考ing阅读 650评论 0 0