收藏
回答

<live-player>组件对touch的响应事件数据似乎不正确

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug &lt;live-player&gt; 微信iOS客户端 7.0.7 2.8.3

问题:<live-player>上绑定touch事件有bug吧?

<live-player capture-bind:touchstart='onTouchStart' capture-catch:touchmove='onTouchMove' ></live-player>

onTouchStart:function(e) {
    if (e.touches.length == 1) {
      console.log('单指 touch start');
    } else {
      console.log('双指+ touch start');
      console.log(e);
    }
  },
onTouchMove:function(e){
  if (e.touches.length === 1) {
      console.log('单指 touch move');
  } else {
      console.log('双指+ touch move, 手指数量:', e.touches.length);
      if (e.touches.length != 2) {
        console.log(e);
        console.warn('手指数量怎么会这么多?!');
        return;
      }
      if (e.touches[0].clientX == e.touches[1].clientX && e.touches[0].clientY == e.touches[1].clientY ) {
        console.error('两根手指的坐标完全一样!');
        console.log(e);
        return;
      }
  }
 
},

touch相关事件绑定在view上ok:



但在<live-player>上时,两个手指放上去经常会出现"两个手指坐标相同"、"多个touches"!


回答关注问题邀请回答
收藏

2 个回答

  • 灵芝
    灵芝
    2019-10-09

    非同层的原生组件组件不支持touchstart等触摸相关事件

    2019-10-09
    有用
    回复 3
  • 惠雨
    惠雨
    2019-10-02

    猜测是绑定touch事件的元素,其children不能是<live-player>、<cover-view>。

    + <view>  // 在此绑定可以正确响应双指操作

    + <image>

    --------------------------------------------------------------------------------------------------------------------------------

    +<view> // 在此绑定,双指触发touchstart/touchmove时,touches数组中的identifier相同

    + <live-player>

    尚待确认。

    2019-10-02
    有用
    回复
登录 后发表内容
问题标签