【发布时间】:2014-10-16 19:26:42
【问题描述】:
我已将 Hammer.js 事件添加到我网站上的元素中。它们都正确触发并且一切都很好,但是一个问题引起了我的设计师的注意。他注意到,当您尝试用手指在元素上滚动页面时,什么也没有发生。不幸的是,这是一个游戏破坏者。
所以我的问题是,如何在使用 Hammer.js 时保持滚动。
谢谢!
【问题讨论】:
标签: javascript ios safari touch hammer.js
我已将 Hammer.js 事件添加到我网站上的元素中。它们都正确触发并且一切都很好,但是一个问题引起了我的设计师的注意。他注意到,当您尝试用手指在元素上滚动页面时,什么也没有发生。不幸的是,这是一个游戏破坏者。
所以我的问题是,如何在使用 Hammer.js 时保持滚动。
谢谢!
【问题讨论】:
标签: javascript ios safari touch hammer.js
对于那些正在寻找解决方案的人来说,这就是我想出的。
this.$hammer = $('img').hammer();
this.$hammer.on('touchstart', fingerDown)
.on('touchend', fingerUp)
.on('pinch', setScale);
function fingerDown(e) {
var fingersDown = e.originalEvent.touches.length;
if (fingersDown > 1) {
// Lock Scrolling over the zoom element by allowing Hammer.js to fire pinch events.
toggleHammerScrolling(true);
}
}
function fingerUp(e) {
toggleHammerScrolling(false);
}
function toggleHammerScrolling(shouldScroll){
//This is where your implementation may change. Just do .get('pinch').set... on your own hammer object.
this.$hammer.data('hammer').get('pinch').set({
enable: shouldScroll
});
}
function setScale(){
console.log('do pinching stuff here');
}
【讨论】:
touchstart 和touchend 注册事件处理程序。
tap 和press 事件,而我依靠touchstart、touchmove 和touchend 手动处理捏合手势。