处理iOS和Ember中的touchMove事件

问题描述 投票:2回答:1

我正在为一个使用Flame.js的Ember应用添加iOS支持。大多数Flame.js的小部件 目前还没有对触摸事件的内置支持。所以我正在努力把它添加到我需要的人。我已经有了 touchStarttouchEnd 在点击和某些状态转换时工作得很好。

然而, touchMove 到目前为止,一直是一团糟。我需要它来进行拖动,为此我需要跟踪运动开始的位置和它的位置。到目前为止,我还没能持续地从 touchMove. 各种 资源 建议我应该寻找在 event.touches 数组,但到目前为止,我构建的jsFiddles都会抛出 TypeError 当我试图获得 length 的数组上,他们声称该数组是未定义的。(通常要找的地方。event.pageX, event.pageY等也未定义)。)

我正在用iPad和 幻肢,而对于后者,我能够通过访问的方式来获取数据。originalEvent但这在实际的iPad上是行不通的,我认为是因为 originalEvent 属性是Phantom Limb工作方式的产物。我的理论是,访问 originalEvent 正在访问原来的 mouseMove 幻肢变身成的那只幻肢 touchMove.)

为什么是 event.touches 对我来说,数组未定义?更重要的是,我在哪里可以获得触摸位置数据,以便我可以拖动?

这是我的 最具代表性的jsFiddle. 点击按钮得到一个Panel,你应该能够通过拖动它的标题栏来重新定位,如果这是工作。中的Flame.State的扩展。titleView 的App.TestPanel覆盖了Flame本身的原始状态。

javascript ember.js touch dom-events
1个回答
4
投票

我不认为这只是PhantomLimb的产物。我们也有类似的挑战,用的是下面的。

normalizeTouchEvent = function(event) {
    if (!event.touches) {
        event.touches = event.originalEvent.touches;
    }
    if (!event.pageX) {
        event.pageX = event.originalEvent.pageX;
    }
    if (!event.pageY) {
        event.pageY = event.originalEvent.pageY;
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.