【问题标题】:Ionic - Touch Event for When the Touch Began on a Different Element?Ionic - 触摸在不同元素上开始时的触摸事件?
【发布时间】:2015-09-16 15:47:31
【问题描述】:

我正在使用 Ionic 制作一个文字游戏,用户可以在其中一次滑动选择一系列相邻的字母。这些字母被实现为单独的 div 元素。

我知道要为起始字母使用什么事件(touchstart 似乎效果很好),但我不知道要为中间图块使用什么事件。触摸启动不起作用; touchdrag 似乎不起作用。本质上,当他们开始在中间的那个字母上滑动时,“鼠标”就已经落下了。

关于如何检测任何触摸的任何见解(无论是开始还是用户是否已经处于从另一个磁贴开始的“滑动”中间)?

【问题讨论】:

  • touchmove 可能适用于所有情况。这将取代touchstart
  • 奇怪的是,这些事件(包括 touchmove)总是在“拖动”开始的第一个元素上触发(即使滑动已经移动到其他元素)。事件目标始终是第一个被触摸的元素。
  • 我以前使用过elementFromPoint 来抓取touchmoved 的每个元素。

标签: ionic-framework hammer.js


【解决方案1】:

您可以将elementFromPointtouchmove 事件一起使用。因此,在您的 touchmove 回调函数中,包含事件的 (e) 参数并尝试收集所有触摸的元素。

var touchedIds = [];
var touches = e.originalEvent.touches;

for(var x = 0; x < touches.length; x++) {
    var touch = e.originalEvent.touches[x];
    var element = document.elementFromPoint(touch.clientX, touch.clientY);

    touchedIds[x] = element; // however you want to add it to the array. 
}

您最终会接触到一组元素。您可能需要过滤掉额外的元素以获得不同的数组,但这将是微不足道的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2023-03-23
    • 2016-03-02
    相关资源
    最近更新 更多