locked
触控手势双击的时候同时产生DoubleTap和Tap事件的问题 RRS feed

  • 问题

  • 触控手势开发的时候遇到个问题,双击屏幕的时候,会同时发生DoubleTap和Tap事件,但是我双击的时候,并不想产生点击的事件。

    如何处理比较好,有没有比较好的方法?

    2012年4月12日 9:33

答案

  • 这样做不难理解,当你第一下tap时,手机不知道你是否会紧接着做第二下tap,如果它等待第二下tap就造成延迟,所以只好不等待第二下tap,先触发tap事件。
    • 已标记为答案 wzwyc 2012年4月16日 1:19
    2012年4月13日 3:25
  • 可以考虑用计时器,如果一段时间内没有触发DoubleTap,则执行Tap的逻辑,否则只执行DoubleTap的逻辑。

    具体做法:

    在Tap事件处理方法体中启动一个计时器,让计时器来触发Tap的逻辑。

    同时,在DoubleTap的处理方法内一上来就Stop这个计时器,然后执行DoubleTap自身的逻辑。


    • 已标记为答案 wzwyc 2012年4月16日 1:19
    2012年4月14日 14:53

全部回复

  • 第一下触发tap,第二下触发doubleTap,只要不对tap事件做处理就可以了。

    • 已建议为答案 Otomii Lu 2012年4月13日 3:29
    • 取消建议作为答案 Otomii Lu 2012年4月16日 1:20
    2012年4月12日 13:27
  • 但是tap事件我并不是不需要处理的,单击的时候还是要处理的。

    我觉得微软应该在这块应该改进一下,双击的时候没必要产生单击事件。

    2012年4月13日 2:47
  • 这样做不难理解,当你第一下tap时,手机不知道你是否会紧接着做第二下tap,如果它等待第二下tap就造成延迟,所以只好不等待第二下tap,先触发tap事件。
    • 已标记为答案 wzwyc 2012年4月16日 1:19
    2012年4月13日 3:25
  • 你可以直接设置

    TouchPanel.EnabledGestures = GestureType.DoubleTap;
    

    设置支持的手势类型仅有DoubleTap

    • 已建议为答案 Otomii Lu 2012年4月13日 3:30
    • 取消建议作为答案 wzwyc 2012年4月13日 10:35
    2012年4月13日 3:30
  • 你可以直接设置

    TouchPanel.EnabledGestures = GestureType.DoubleTap;
    

    设置支持的手势类型仅有DoubleTap

    你的理解有误,如果仅只需要支持DoubleTap就啥问题都没有了。我的应用需要同时支持Tap和DoubleTap,我只是希望双击的时候不处理Tap事件。

    MainTao说的也挺有道理,不过好像Windows上双击的时候就不会有单击的事件出来的。其实这个短暂的延迟应用应该感觉不大出来,用户体验影响不大。

    但是同时产生的话,对需要同时支持单击和双击功能的,就很难处理了。

    大家有没有啥比较好的解决方法?

    2012年4月13日 10:42
  • 可以考虑用计时器,如果一段时间内没有触发DoubleTap,则执行Tap的逻辑,否则只执行DoubleTap的逻辑。

    具体做法:

    在Tap事件处理方法体中启动一个计时器,让计时器来触发Tap的逻辑。

    同时,在DoubleTap的处理方法内一上来就Stop这个计时器,然后执行DoubleTap自身的逻辑。


    • 已标记为答案 wzwyc 2012年4月16日 1:19
    2012年4月14日 14:53