在 iOS 和 Ember 中处理 touchMove 事件



我正在为使用Flame.js的Ember应用程序添加iOS支持。大多数 Flame.js 小部件目前没有对触摸事件的内置支持,所以我正在努力将其添加到我需要的控件中。我有touchStarttouchEnd可以很好地用于单击和某些状态转换。

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

我正在使用iPad和Phantom Limb进行测试,而后者我能够通过访问originalEvent来获取数据,但这在实际的iPad上不起作用,我认为是因为originalEvent属性是Phantom Limb如何工作的人工制品。(我的理论是,访问originalEvent就是访问幻肢变成touchMove的原始mouseMove

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

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

我不认为它只是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;
}
};

最新更新