2

我正在向使用 Flame.js 的 Ember 应用程序添加 iOS 支持。大多数 Flame.js 小部件目前没有内置的触摸事件支持,所以我正在努力将它添加到我需要的小部件中。对于单击和某些状态转换,我已经得到touchStart并且touchEnd工作得很好。

然而,touchMove到目前为止一直一团糟。我需要它来拖动,为此我需要跟踪运动的开始位置和位置。到目前为止,我还无法始终如一地从touchMove. 各种 资源表明我应该在event.touches数组中查找我的数据,但是到目前为止我构建的 jsFiddlesTypeError在我尝试进入length该数组时都会抛出,他们声称这是未定义的。(通常的查看位置、event.pageXevent.pageY等也未定义。)

我正在使用 iPad 和Phantom Limb进行测试,使用后者我可以通过访问来获取数据originalEvent,但这在实际的 iPad 上不起作用,我认为因为该originalEvent属性是 Phantom Limb 工作方式的人工制品. (我的理论是访问是访问Phantom Limb 转换为originalEvent的原始文件。)mouseMovetouchMove

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

这是我最具代表性的 jsFiddle。单击该按钮以获取一个面板,如果这有效,您可以通过拖动其标题栏来重新定位它。App.TestPanel 中的titleViewFlame.State 扩展覆盖了 Flame 本身的原始状态。

4

1 回答 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;
    }
};
于 2012-10-16T02:56:24.117 回答