当用户在触摸屏设备上时,我想限制对角线滚动 - 因此我们的想法是强制一次向一个方向滚动 - 水平或垂直。
我已经设置了一个JS小提琴,可以检测是否启用了触摸滚动,并且我能够输出x和y坐标。但我没有看到偏移或任何东西,我想要计算预期的方向。
我知道苹果使用的directionalLockEnabled
会限制,所以我想知道Kendo中是否有这样的东西。如果没有,也许我可以找出用户想要滚动的方向并“冻结”其他坐标。
我创建的JS小提琴(dataBound
方法中的相关部分):
http://jsfiddle.net/dmathisen/tskebcqp/
(相关代码仅适用于触摸...但如果您在开发工具中启用移动模拟,则应该有效)
另一个问题是触发滚动事件的次数。工作时,也许我可以设置一个去抖动来处理它被触发的频率。
答案 0 :(得分:3)
如果您想使用javascript进行此修复,您可以计算X和Y移动的范围。 对于触摸设备,在touchstart时设置开始位置X和Y,并在touchmove时计算距离
var touchY = touchX = 0;
$(document).delegate('.yourWrap', 'touchstart', function(e){
touchX = e.originalEvent.touches[0].pageX;
touchY = e.originalEvent.touches[0].pageY;
});
$(document).delegate('.yourWrap', 'touchmove', function(e){
if (Math.abs(touchX - e.originalEvent.touches[0].pageX)
> Math.abs(touchY - e.originalEvent.touches[0].pageY)) {
// Block overflow-y
} else {
// Block overflow-x
}
touchX = e.originalEvent.touches[0].pageX;
touchY = e.originalEvent.touches[0].pageY;
});
对于车轮设备,比较delta
(e.wheelDeltaY/3 || -e.deltaY)
(e.wheelDeltaX/3 || -e.deltaX)