收藏
回答

关于长按触发longtap事件的2个bug

问题模块
API和组件



公司名称


MP帐号(邮箱)


开发者微信号


机型(如iPhone 6s plus)

模拟器和安卓,ios没试过

操作系统(如iOS 9.3)

模拟器目前最新版,安卓6.0,其他未试过

是否必现

必现

出现时间

刚发现

操作路径(即如何操作可以复现该问题)

情况1:


  1. 长按view标签触发longtap事件,执行删除脚本,移除当前view标签

  2. 此时,如果再次长按另一个view标签,或者,点击界面的任何位置,都会触发tap事件


情况2:

  1. 长按view标签触发longtap事件,弹出是否确认删除的框

  2. 此时,会连带触发tap事件

  3. 点击确认删除,原view被删除

  4. 此时,执行情况1中的第二步骤,并不会出现情况1的bug异常情况


问题描述(具体问题介绍)

我做的是一个上传多张图片,允许长按直接删除图片,点击预览大图,这2个功能的效果。

所以一个view里面会有longtap和tap事件。

于是就出现了上述bug。

问题截图(客户端问题界面截图)


代码片段截图

<block wx:for="{{imgs}}" wx:for-index="i" wx:key="*this">
   <view class="weui-uploader__file" bindtap="previewImage" id="{{item}}" bindlongtap="removeImg">
       <image class="weui-uploader__img" src="{{item}}" mode="aspectFill" />
   </view>
</block>




previewImage: function (e) {
wx.previewImage({
current: e.currentTarget.id, // 当前显示图片的http链接
       urls: this.data.imgs // 需要预览的图片http链接列表
   })
},
removeImg: function (e) {
let imgs = this.data.imgs;

   let deleteImgURL = e.currentTarget.id;
   if (deleteImgURL.indexOf('http') === 0) {
let deleteImgs = this.data.form.deleteImgs || [];
       deleteImgs.push(deleteImgURL);
       this.setData({
'form.deleteImgs': deleteImgs
});
   }

let indx = imgs.indexOf(deleteImgURL);
   imgs.splice(indx, 1);
   this.setData({
imgs: imgs
});
},






最后一次编辑于  2017-05-22  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • LastLeaf
    LastLeaf
    2017-06-14

    你好。我们重新确认了一下这个问题。现在的表现是:

    1. longtap事件触发的时候,如果不移除target,touchend和tap事件会被正常触发;

    2. longtap事件触发的时候,如果移除target,touchend和tap事件会触发且target有问题。


    我们会修正这个问题,具体会怎样触发事件还要讨论一下。


    另外,你所说的情况2事实上是符合我们的设计的。


    2017-06-14
    赞同
    回复
  • LastLeaf
    LastLeaf
    2017-05-22

    感谢反馈。初步推断为长按+删除时的逻辑缺陷,我们会尽快修复。

    2017-05-22
    赞同
    回复
  • 赵进勇
    赵进勇
    2018-02-01

    这个 longtap 和 tap 事件触发的问题还在啊,怎么解决的?预览图片上的长按 也没看到可以删除?

    2018-02-01
    赞同
    回复
  • 新新
    新新
    2017-05-22

    个人认为,是长按导致了页面的全选效果,然后引发的各种异常

    2017-05-22
    赞同
    回复