2
我已將Hammer.js事件添加到我網站上的某個元素。他們都正確地開火,一切都很好,但一個問題引起了我的設計師的注意。他注意到,當您嘗試用手指滾動頁面時,沒有任何反應。不幸的是,這是一個破壞遊戲的人。Hammer.js阻止iOS Safari上的滾動事件
所以我的問題是,如何在使用Hammer.js時保持滾動。
謝謝!
我已將Hammer.js事件添加到我網站上的某個元素。他們都正確地開火,一切都很好,但一個問題引起了我的設計師的注意。他注意到,當您嘗試用手指滾動頁面時,沒有任何反應。不幸的是,這是一個破壞遊戲的人。Hammer.js阻止iOS Safari上的滾動事件
所以我的問題是,如何在使用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');
}
這似乎不適用於最新的hammer.js 2.0.x. 現在不可能爲'touchstart'和'touchend'註冊一個事件處理程序。 – Apuleius 2017-06-21 21:26:19
適合我的是:我使用hammer.js進行'tap'和'press'事件,而我依靠'touchstart','touchmove'和'touchend'手動處理捏手勢。 – Apuleius 2017-06-21 22:05:34