我正在使用此代码使用触摸事件在平板电脑上的 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 引起了问题。