具体现象:开发工具中一直正常。真机调试模式下也一直正常。只有在真机环境下才有此问题。
真机环境(非扫码调试):第一次长按时间如果时间较短(比如1秒内),后续长按会则正常。
但只要有一次长按时间较长(比如超过3秒),此次长按能正常触发touchend及tap事件,而后续的所有长按(不管是否超过3秒)都会在longtap后自动触发touchcancel事件(确保手没有移动)。
机型:小米8
框架类型 | 问题类型 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|
小程序 | Bug | 微信安卓客户端 | 7.0.9 | 2.9.4 |
具体现象:开发工具中一直正常。真机调试模式下也一直正常。只有在真机环境下才有此问题。
真机环境(非扫码调试):第一次长按时间如果时间较短(比如1秒内),后续长按会则正常。
但只要有一次长按时间较长(比如超过3秒),此次长按能正常触发touchend及tap事件,而后续的所有长按(不管是否超过3秒)都会在longtap后自动触发touchcancel事件(确保手没有移动)。
机型:小米8
2 个回答
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
//index.js
Page({
data: {},
onLoad: function () { },
ctl_start: function (event) {
console.log("touchstart :", event.currentTarget.dataset);
wx.vibrateShort();
},
ctl_longtap: function (event) {
console.log("longtap :", event.currentTarget.dataset);
},
ctl_touchmove: function (event) {
console.log("touchmove :", event.currentTarget);
},
ctl_touchcancel: function (event) {
console.log("touchcancel :", event.currentTarget);
},
ctl_touchend: function (event) {
console.log("touchend :", event.currentTarget.dataset);
},
ctl_tap: function (event) {
console.log("tap :", event.currentTarget.dataset);
wx.vibrateShort();
},
})
//index.wxml
<view bind:touchstart="ctl_start" bind:longtap="ctl_longtap" bind:touchmove="ctl_touchmove" bind:touchcancel="ctl_touchcancel" bind:touchend="ctl_touchend" bind:tap="ctl_tap" style="text-align:center;padding:50px;background-color:#efefef;">
<icon type="success" size="40" />
</view>
1、长按保持3-5秒,这一次能正常触发touchend。
2、再次长按3-5秒,无法触发touchend事件,touchcancel被自动触发
遇到了同样的问题,快半年了,大佬们还没修复好吗?