html - 可靠地使用 hammer.js 获取平移事件,同时仍然在 iOS 中自然滚动......?

标签 html ios safari touch hammer.js

本质上,我希望能够使用hammer.js简单地检测任何平移事件(或至少所有平移x事件)的开始和结束,同时仍然允许在x轴上自然溢出滚动。平移识别器上的 touchAction 声明允许其在 Android > Chrome 上与自然溢出滚动一起正常工作,但不能在 iOS > Safari 上(任何 Safari 版本目前不支持触摸操作声明)。

Codepen(debug-mode) 或者 Codepen(normal-mode)

EG。

var hit = document.getElementById('hit');
var text = document.getElementById('text');

var hammer = new Hammer.Manager(hit);
hammer.add(new Hammer.Pan({
  direction: Hammer.DIRECTION_ALL,
  touchAction: 'pan-x'
}));

hammer.on("panstart", function(ev){
  console.log('panstart');
  text.textContent = ev.type +" detected.";
});
hammer.on("panend pancancel", function(ev){
  console.log('panend');
  text.textContent = ev.type +" detected.";
});

是否有一种可靠的方法来检测平移运动的所有方向(或仅x),但也允许正常的溢出滚动x行为(在iOS中)?我尝试将平移识别器切换为垂直,但发现平移识别器并不总是/可靠地立即被检测到。

最佳答案

再想一想,也许 Hammer.js 对于这个特定的用例来说太过分了。

通过剥离 Hammer,并简单地使用 native ontouchstart 和 ontouchend 事件,我成功地获得了所需的结果。例如:

aDomObject.addEventListener('touchstart', handlePanStart, false);
aDomObject.addEventListener('touchend', handlePanEnd, false);
aDomObject.addEventListener('touchcancel', handlePanEnd, false);

这样,任何触摸事件的默认操作都会落入默认浏览器行为(在我的例子中 - 溢出!)。

关于html - 可靠地使用 hammer.js 获取平移事件,同时仍然在 iOS 中自然滚动......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779828/

相关文章:

ios - NSTimeZone 值和区域设置

ios - CGAffineTransformMakeTranslation 与 CGRectOffset 动画

javascript - 在 HTML5 中,localStorage 对象是按页面/域隔离的吗?

PHP登录表单需要提交2次

html - 元素内的谷歌地图 div 不起作用

safari - Safari 4.0 的 CSS 但不是 Google Chrome

html - 移动设备上的触摸滚动 - 输入问题

javascript - HTML5 DataList 搜索可用语言?

iphone - 为 UITableView 的第一个和最后一个单元格制作圆角

html - “AE”字符在 Safari 中显示为一个字符