【发布时间】:2011-12-17 07:27:27
【问题描述】:
我正在使用 iScroll.js 滚动浏览移动页面上的项目轮播。我发现了以下修复程序,它监听垂直移动并停止 iScroll 脚本控制,让原生垂直滚动发生:
onBeforeScrollStart: function(e) {
try {
point = e.touches[0];
pointStartX = point.pageX;
pointStartY = point.pageY;
} catch(e) {}
null;
},
onBeforeScrollMove: function(e) {
try {
deltaX = Math.abs(point.pageX - pointStartX);
deltaY = Math.abs(point.pageY - pointStartY);
if (deltaX >= deltaY) {
e.preventDefault();
} else {
null;
}
} catch(e) {}
}
我正在使用 try{}catch{},因为它在浏览器中测试时出现了一些问题(抱怨未定义点)。
我遇到的问题是它在 iOS 上运行良好,在多个 i 设备上进行了测试,但在 Android 上却不是那么好。如果用户尝试垂直滚动页面,首先将手指放在轮播上,页面不会滚动,因为 iScroll 仍然具有控制权。
知道如何让它在 Android 上运行,或者有任何指向它可能出错的地方吗?
编辑:
进行了一些调试,我发现了这可能不起作用的原因。当用户在 iOS 上触摸屏幕时,坐标会被更新,但在 Android 上,只会捕获第一组坐标。知道为什么会这样吗?
【问题讨论】:
-
你试过使用
myScroll.disable()和myScroll.enable()吗?