我正在为一个使用Flame.js的Ember应用程序添加iOS支持。大多数Flame.js小部件都是don't have built-in support for touch events at the moment,所以我正在努力将其添加到我需要的小部件中。我已经让touchStart和touchEnd在点击和某些状态转换上工作得很好。
然而,到目前为止,touchMove一直是一团糟。我需要它来拖动,要做到这一点,我需要跟踪移动开始的位置和位置。到目前为止,我还不能从touchMove获得所有一致的信息。Various resources建议我应该在event.touches数组中查找我的数据,但是我到目前为止构建的jsFiddles在我试图在该数组上获取TypeError时都抛出了length,他们声称它是未定义的。(通常要查看的位置、event.pageX、event.pageY等也未定义。)
我正在使用iPad和Phantom Limb进行测试,使用后者我可以通过访问originalEvent获取数据,但这在实际的iPad上不起作用,我认为这是因为originalEvent属性是幻影肢体工作方式的工件。(我的理论是,访问originalEvent就是访问幻影肢体转换为touchMove的原始mouseMove。)
为什么没有为我定义event.touches数组?更重要的是,我可以在哪里获得触摸位置数据,以便我可以拖动?
这是我的most representative jsFiddle。点击按钮得到一个面板,你应该能够通过拖动它的标题栏重新定位,如果这是工作的话。Flame.State在titleView of Flame中的扩展覆盖了App.TestPanel本身的原始状态。
发布于 2012-10-16 10:56:24
我不认为它只是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;
}
};https://stackoverflow.com/questions/12888128
复制相似问题