3

我正在使用此代码使用触摸事件在平板电脑上的 div 内移动图像。我发现在 iPad 上进行测试时,图像可以非常愉快地垂直、水平或同时移动(如果你从对角线开始)。但是,我还发现,如果您从垂直或水平移动图像开始,则在完成该手势并开始另一个手势之前,您无法更改方向。

似乎一旦你开始在一个轴上移动,它就会优先于另一个轴,无论触摸点的坐标是什么。无论您如何开始,有没有办法覆盖此行为以向任何方向移动,或者它只是 Safari 解释 touchMove 的方式?

如果有帮助,可以在此处的上一个问题中找到更详细的代码。

var clicking = false;
var previousX;
var previousY;

$("#scroll").touchStart(function(e) {
    e.preventDefault();
    previousX = e.clientX;
    previousY = e.clientY;
    clicking = true;
});

$(document).touchEnd(function() {  
    clicking = false;
});

$("#scroll").touchMove(function(e) {
    if (clicking) {
        e.preventDefault();
        var directionX = (previousX - e.clientX) > 0 ? 1 : -1;
        var directionY = (previousY - e.clientY) > 0 ? 1 : -1;
        $("#scroll").scrollLeft($("#scroll").scrollLeft() + (previousX - e.clientX));
        $("#scroll").scrollTop($("#scroll").scrollTop() + (previousY - e.clientY));
        previousX = e.clientX;
        previousY = e.clientY;
    }
});

$("#scroll").touchLeave(function(e) {
    clicking = false;
});

编辑:刚刚检查过,它在 Android 平板电脑上工作正常,所以只是 iPad 引起了问题。

4

0 回答 0