「iOS」解決Charts中圖表手勢與UIScrollView滑動手勢沖突

問題:Charts中圖表手勢與UIScrollView滑動手勢沖突

我在UITableView(UIScrollView)中添加了PieChartView后出現(xiàn)手勢混亂。如旋轉圖表的圓環(huán)時,UITableView(UIScrollView)也跟著跑了,而圓環(huán)卻不轉了。??

解決思路:獲取當前點擊操作及位置,當用戶點的是圖表就將UITableView(UIScrollView)的isScrollEnabled置為false
實現(xiàn)代碼:

在發(fā)生沖突的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方法需要你仔細設置一下,讓用戶感覺到只有點到圖表才會旋轉,而不是空白處。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,658評論 1 32
  • 今天風很大,下班搭了個同事的順風車?;氐郊易狭赵谧鲎鳂I(yè),我走過去看了看,正在做語文新世紀,看她寫的認真,我...
    2018一米陽光閱讀 124評論 0 0
  • 一,我做了什么? 1,10.10—11.11日,參加GALA訓練營10期饅頭,認識了兩個面條,一位是簡書簽約作家,...
    清清是顆小太陽閱讀 246評論 6 4
  • 一、性能優(yōu)化 ANR,內存溢出,內存抖動,內存泄漏,UI卡頓,冷啟動優(yōu)化(https://www.jianshu....
    瀟蕭之炎閱讀 947評論 0 0
  • 這個周末被拼多多的文章和消息都淹沒了。 周末讀了一篇好文章和一本好書。人類的宗教,探討宗教的價值。在當時環(huán)境下有什...
    思考ing閱讀 108評論 0 0

友情鏈接更多精彩內容