收藏
回答

Android上canvas滑动到控件外,touchend不触发

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas 客户端 7.0.4 2.6.6

 Android上canvas滑动到控件外,touchend不触发,iPhone上没有问题。


极容易复现


(xml代码)

<view class="container">


<canvas canvas-id="canvasId1" style="width:200prx;height:200prx;background:#222;" bindtouchstart='touch1' bindtouchmove='touch1'bindtouchend='touch1' bindtouchcancel='touch1'></canvas>


<canvas canvas-id="canvasId2" style="width:200prx;height:200prx;background:#f42;margin-top:30rpx" bindtouchstart='touch2'bindtouchmove='touch2' bindtouchend='touch2' bindtouchcancel='touch2'></canvas>

<view>{{msg}}</view>


</view>


(js代码)


Page({

data: {

msg:""

},

//事件处理函数

touch1: function(e) {

let msg = "canvas1:"+ e.type + " x:"+ parseInt(e.changedTouches[0].x) + " y:" +parseInt(e.changedTouches[0].y)

console.log(msg)

this.showMsg(msg)

},

touch2: function (e) {

let msg = "canvas2:" + e.type + " x:" + parseInt(e.changedTouches[0].x)+ " y:" + parseInt(e.changedTouches[0].y)

console.log(msg)

this.showMsg(msg)

},


showMsg:function(msg){

this.setData({

msg:msg

})

}

})


最后一次编辑于  2019-04-24
回答关注问题邀请回答
收藏

2 个回答

  • sincere
    sincere
    2019-07-25

    您好,请问解决了吗?


    2019-07-25
    有用
    回复 3
    • 彭学添
      彭学添
      2019-07-30
      没有修复这个bug,但是在外面加一层view,取view的事件和X、Y坐标,可以避免这个情况
      2019-07-30
      回复
    • 安安chin
      安安chin
      2019-08-20回复彭学添
      请教下,您的意思是给canvas加个view包起来,在这个view上绑定事件获取坐标吗?
      2019-08-20
      回复
    • 彭学添
      彭学添
      2019-08-20
      没错
      2019-08-20
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2019-04-24

    你好,麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    2019-04-24
    有用
    回复 7
    • 彭学添
      彭学添
      2019-04-25

      代码片段https://developers.weixin.qq.com/s/d1Z9BSmF7w72

      2019-04-25
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2019-04-25回复彭学添

      具体要怎么操作呢?方便提供下复现视频么

      2019-04-25
      回复
    • 彭学添
      彭学添
      2019-04-25回复疯狂的小辣椒


      下面显示的显示信息就是表示事件的响应,在canvas框内抬起手指,touchend触发。在canvas框外抬起手指,touchend不触发。仅仅针对是Android手机,测试手机是荣耀paly、小米8、红米note4。在苹果手机iPhone 6 测试,在canvas框内外抬起手指,结果都touchend触发。

      2019-04-25
      1
      回复
    • 小胡xiaohu
      小胡xiaohu
      2020-03-03
      您好,基础库2.10.2版本,这个问题在一加5t手机上依然存在,手指在canvas上滑出屏幕外,touchend不触发
      2020-03-03
      回复
    • 小胡xiaohu
      小胡xiaohu
      2020-03-03
      https://developers.weixin.qq.com/s/9RrLTzmE7Tfy
      2020-03-03
      回复
    查看更多(2)
登录 后发表内容