iOS
系統上echarts
不能滑動的問題在微信小程序中使用echarts
插件的時候,遇到了一個問題:當系統是iOS
時,若是手指先是長按圖表,而後頁面會沒法滑動,其中南丁格爾玫瑰圖尤爲明顯。做爲一個微信小程序的新手開發,這個問題屬實難倒我了。html
使用一個遮罩層覆蓋echarts
圖表,這樣的話,當長按並滑動頁面的時候,滑動的就是這個遮罩層了,天然就能夠解決問題。ios
遇到的問題:canvas
canvas
是原生組件,層級很高,view
沒法做爲遮罩層。我使用的是cover-view
做爲遮罩層。小程序
<cover-view wx:if="{{isIOS}}" class="echart-mask" ></cover-view> <e-chart chart-class='echart' option='{{ data.getEChartOption(employeeInfoList) }}' bindinstance='getEchartInstance' />
再添加了遮罩層以後,在iOS
系統上能夠正常滑動,可是在Android
系統上又沒法滑動了(真是風水輪流轉 ̄へ ̄)。我是在頁面上對系統進行判斷,以決定是否建立遮罩層。微信小程序
wx.getSystemInfo({ success: (result) =>this.setData({ isIOS: result.system.match(/iOS/) }), });
由於echarts
圖標在我這只是進行數據展現,而不會與用戶進行交互,因此也考慮到了在echarts的過渡動畫走完以後,用圖片來代替echarts
組件。微信
getEchartInstance({ detail: echart }) { echart.on('finished', () => { echart .getDom() .saveAsImage() .then((path) => { this.setData({ homeworkCountEchartImg: path }); }); }); },
遇到的問題:echarts
在圖片替換echarts
的時候,出現了一次閃爍。要注意在圖片加載完畢以後再移除echarts
,能夠使用image
的bindload
來控制。動畫
echart
插件的disableTouch
屬性。在option
對象的根目錄,添加disableTouch
屬性,設爲true便可。這是微信echarts
插件官方技術人員給出的一種解決方案。(吐槽一下微信小程序的文檔,太簡潔了,徹底沒有找到這個屬性的隻言片語好吧,新手很無奈呀(•́へ•́╬))。this
var eChartOption = { disableTouch: true, //解決ios系統,echarts長按不能滑動的問題 color: [ '#79db66', '#769efd', '#f6994f', '#f5df4e', '#a668f5', '#66cbdb', '#dc76fd', '#6062e0', '#ec7997', '#88e6be', ], legend: { selectedMode: false, show: false, }, }