Hammer.js平移事件仅适用于触摸设备,不适用于台式机Click + Drag [英] Hammer.js pan event only for touch devices and not for desktop computer Click+Drag

查看:80
本文介绍了Hammer.js平移事件仅适用于触摸设备,不适用于台式机Click + Drag的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将这个标准代码用于Hammer.js的平移/捏合(em)(1):

I use this standard code for Pan / Pinch (1) with Hammer.js :

var mc = new Hammer(document.body);

mc.add(new Hammer.Pinch({ threshold: 0 })).recognizeWith(mc.get('pan'));

// let the pan gesture support all directions. this will block the vertical scrolling on a touch-device while on the element
mc.get('pan').set({ direction: Hammer.DIRECTION_ALL });
mc.on("panleft panright panup pandown tap press pinchstart pinchmove", function(ev) {
    $('#myElement').text(ev.type +" gesture detected. ev.scale=" + ev.scale + "  ev.deltaX,Y=" + ev.deltaX +'  ' + ev.deltaY);
});

如何获取Hammer.js平移事件仅适用于触摸设备而不适用​​于台式机Click+Drag??(因为我已经有适用于台式机点击的代码+拖动,并且我不想重写它!)

How to get the hammer.js pan events only for touch devices and not for desktop computer Click+Drag? (because I have already working code for desktop computer click+drag, and I don't want to rewrite this!)

注意(1):顺便说一句,这段代码好吗?为什么真正需要recognizeWith?:

推荐答案

您可以通过设置 inputClass 选项来强制Hammer.js使用所需的输入类:

You may force Hammer.js to use the input class that you want by setting inputClass option:

var hammer = Hammer(element, {
  inputClass: Hammer.TouchInput
})

您可能还希望在可用时支持指针事件:

You may want also to support pointer events when available:

var hammer = Hammer(element, {
  inputClass: Hammer.SUPPORT_POINTER_EVENTS ? Hammer.PointerEventInput : Hammer.TouchInput
})

Hammer.js具有以下内置的inputClasses:

Hammer.js has following inputClasses built in:

  • PointerEventInput
  • TouchInput
  • MouseInput
  • TouchMouseInput

这篇关于Hammer.js平移事件仅适用于触摸设备,不适用于台式机Click + Drag的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆