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, }, }