3

我正在尝试修复一个仅在 iOS13 上出现的带有水平滚动图片库的错误。我们使用的是 Hammer.js,用户可以正确地向左滑动(以获取下一张图片),但他们不能可靠地向右滑动(以获取上一张图片)。正如我所说,这是 Safari 和 Chrome 上的 iOS 13。

我设置了日志来检查平移事件,这就是发生的事情。

如果您将手指向左拖动,则 deltaX(x 轴上的距离)表现得恰到好处 - 距离类似于-11, -22, -41, -58, -68, -84, -101, -114, -124,然后我们点击下一个滑动函数。

但是,如果您将手指向右拖动,则 delta-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
    }
});
4

0 回答 0