Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ios 图表拦截了touch事件? #104

Closed
3 tasks done
cnsilvan opened this issue Mar 28, 2018 · 15 comments
Closed
3 tasks done

ios 图表拦截了touch事件? #104

cnsilvan opened this issue Mar 28, 2018 · 15 comments

Comments

@cnsilvan
Copy link

提问前应该做的事

请确保提问前做了以下事,将完成的项目的 [] 改为 [x]

需提供的信息

将符合项的 [] 改为 [x],并补充需要的信息:

简单描述问题:

在echarts父级增加了touch事件,在调试和android真机上都正常,但是在ios上就不会触发该事件了。
已经使用了
ec: {
lazyLoad: true,
disableTouch: true
}

预期效果:

应该和android一样正常触发事件
(如有需要请提供预期的图)

实际效果:

???
(如有需要请提供截图)

复现环境:

  • [] 在微信开发工具中存在该问题
  • 在真机上存在该问题
@Ovilia
Copy link
Member

Ovilia commented Mar 28, 2018

“不会触发该事件” 是 ECharts 不会响应还是什么意思?

@cnsilvan
Copy link
Author

@Ovilia 感觉是ECharts消费了touch事件
其父容器 这两个bindtouchstart="touchStart" bindtouchend="touchEnd" 并不会调用
但是在ECharts空白区域可以正常调用

@Ovilia
Copy link
Member

Ovilia commented Mar 29, 2018

@cnsilvan 是的,这是预期的效果。你是希望 ECharts 不要相应事件吗?参见 #37

@cnsilvan
Copy link
Author

@Ovilia 我已经设置了disableTouch ,在android上没什么问题,但是在ios上,控件内上下滑动没什么问题,左右滑动就不行。

@Ovilia
Copy link
Member

Ovilia commented Mar 29, 2018

左右滑动?那有横向滚动条吗?

@cnsilvan
Copy link
Author

cnsilvan commented Mar 29, 2018

@Ovilia 我一个页面显示多个echarts 可以正常的上下滑动页面,左右滑动是我在父级view写的监听
bindtouchstart="touchStart" bindtouchend="touchEnd" ,来监听左右滑动来达到切换页面的效果。

android上就算touchStart点在chart上也会正确调用bind的方法上,但是ios上不会触发这两个方法。

@Ovilia
Copy link
Member

Ovilia commented Apr 3, 2018

bind 事件应该不会阻止冒泡,你了解下微信小程序的事件机制吧~

@cnsilvan
Copy link
Author

cnsilvan commented Apr 3, 2018

@Ovilia 你说的都对,但是他就是不响应。你不信用ios试一下。

@cnsilvan
Copy link
Author

cnsilvan commented Apr 3, 2018

ios的日志会比android 多
invoke event touchMove in component:ec-canvas/ec-canvas

@FreeFlying0
Copy link

感觉我遇到的问题和你类似。我也是一个页面上有多个echarts,当你手指在其中一个echarts区域中滑动时,所有的事件都是正常触发的,但当手指滑动到该echarts区域外并结束滑动时,是不会触发echarts的touchEnd事件,之后点击其它echarts时,只会触发touchmove。只有再次点击同一echarts,才会触发touchEnd。
在模拟器上所有事件都是正常的,不存在问题;在安卓上,echarts的事件不正常,但页面滑动可以;ios上,页面滑动也会不正常。 @cnsilvan

@cnsilvan
Copy link
Author

@FreeFlying0 我没有监听echarts的事件,我是需要实现全局左右滑动切换页面,所以在父层监听的事件。
ios下只要在echarts区域内的touch事件 都没有冒泡到父层,安卓下正常。
根据你的描述 我觉得我们应该是一个问题。

@FreeFlying0
Copy link

FreeFlying0 commented Apr 10, 2018

@cnsilvan 现在我的临时解决办法是把不需要触摸的echarts组件重写,把所有touch事件删除

<canvas class="ec-canvas-notouch" canvas-id="{{ canvasId }}" bindinit="init">
</canvas>

但是我还有部分echarts需要有触摸事件,还可能触发这个问题,所以希望官方能解决一下。

@cnsilvan
Copy link
Author

@FreeFlying0 我也是这样处理的

@Ovilia
Copy link
Member

Ovilia commented May 29, 2018

6d3d862 已修复,现在设置 disableTouch 就能禁止拦截触摸事件

// disableTouch: true,

@Ovilia Ovilia closed this as completed May 29, 2018
@Sherry-xj
Copy link

设置 disableTouch左右滑动又不行了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants