2014-10-16 99 views
2

我已將Hammer.js事件添加到我網站上的某個元素。他們都正確地開火,一切都很好,但一個問題引起了我的設計師的注意。他注意到,當您嘗試用手指滾動頁面時,沒有任何反應。不幸的是,這是一個破壞遊戲的人。Hammer.js阻止iOS Safari上的滾動事件

所以我的問題是,如何在使用Hammer.js時保持滾動。

謝謝!

回答

3

對於那些尋找解決方案的人來說,這就是我想出的。

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'); 
} 
+0

這似乎不適用於最新的hammer.js 2.0.x. 現在不可能爲'touchstart'和'touchend'註冊一個事件處理程序。 – Apuleius 2017-06-21 21:26:19

+0

適合我的是:我使用hammer.js進行'tap'和'press'事件,而我依靠'touchstart','touchmove'和'touchend'手動處理捏手勢。 – Apuleius 2017-06-21 22:05:34