我正在尝试修复仅在iOS13上具有水平滚动图像库的错误。我们正在使用Hammer.js,用户可以向左滑动(以获取下一张图像),但不能可靠地向右滑动(以获取上一张图像)。正如我所说的,这是Safari和Chrome上的iOS 13。
我设置了日志来检查平移事件,这就是发生的情况。
如果将手指向左拖动,则deltaX(x轴上的距离)的行为会适当-距离变为-11, -22, -41, -58, -68, -84
,-101, -114, -124
之类,然后单击下一个滑动功能。
但是,如果您向右拖动手指,则增量X会类似于21, 27, 42, 67, 88, 102, 124, 138, 142
,-61
。最后一个-61不会触发上一个幻灯片功能,因为它太小了(如果您的平移大于屏幕宽度的1/4,我们只会触发上一个或下一个),而且方向错误,因此偶尔滑动到上一个会触发下一张幻灯片!
我不知道那个随机最后一个数字的来源。通常小于100,可以是正数或负数。而且只有在向右平移时才会发生。偶尔(每10次中的1次)我们没有得到最后一个不正确的数字并且无法正确滑动,但这很少见,而且似乎与速度或距离无关。
代码非常简单:
mc.on('panstart', function(e) {
//overlay stuff
});
mc.on('pan', function(e) {
//debounced overlay stuff for prefetching the next slide
});
mc.on('panend pancancel', function(e) {
if (Math.abs(e.deltaX) > gallery.width / 4) {
if (e.deltaX < 0) {
next();
} else {
prev();
}
} else {
//do nothing
}
});