首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS和Ember中处理touchMove事件

在iOS和Ember中处理touchMove事件
EN

Stack Overflow用户
提问于 2012-10-15 09:14:19
回答 1查看 1.3K关注 0票数 2

我正在为一个使用Flame.js的Ember应用程序添加iOS支持。大多数Flame.js小部件都是don't have built-in support for touch events at the moment,所以我正在努力将其添加到我需要的小部件中。我已经让touchStarttouchEnd在点击和某些状态转换上工作得很好。

然而,到目前为止,touchMove一直是一团糟。我需要它来拖动,要做到这一点,我需要跟踪移动开始的位置和位置。到目前为止,我还不能从touchMove获得所有一致的信息。Various resources建议我应该在event.touches数组中查找我的数据,但是我到目前为止构建的jsFiddles在我试图在该数组上获取TypeError时都抛出了length,他们声称它是未定义的。(通常要查看的位置、event.pageXevent.pageY等也未定义。)

我正在使用iPad和Phantom Limb进行测试,使用后者我可以通过访问originalEvent获取数据,但这在实际的iPad上不起作用,我认为这是因为originalEvent属性是幻影肢体工作方式的工件。(我的理论是,访问originalEvent就是访问幻影肢体转换为touchMove的原始mouseMove。)

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

这是我的most representative jsFiddle。点击按钮得到一个面板,你应该能够通过拖动它的标题栏重新定位,如果这是工作的话。Flame.State在titleView of Flame中的扩展覆盖了App.TestPanel本身的原始状态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 10:56:24

我不认为它只是PhantomLimb的产物。我们有一个类似的挑战,并使用以下方法:

代码语言:javascript
复制
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;
    }
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12888128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档