关于iPad Safari事件处理程序的问题

时间:2011-07-21 09:35:54

标签: javascript ios ipad javascript-events safari

假设我有一个包含多行的框/表..这些行是可拖动的。

现在我有一个JS,我为iPad实现了touchstart,touchmove,touchend的事件处理程序......基本上他们只是将这些事件映射到鼠标悬停,mousedown,mouseup等相应的鼠标事件

现在这是我的问题;

虽然我能够从表中拖动任何行,但我也希望能够滚动它。当我在屏幕上按任意手指并向下拖动时,它会对该行执行拖动操作(因为我使用event.preventDefault()进行touchmove以防止默认滚动区域。)

现在我明白我不能用一根手指同时进行这两个动作(拖动/滚动)。 所以我想在使用双指时实现/进行滚动操作..(另一种情况,即单指,它应该执行拖动操作)

现在我知道event.touches.length / event.targetTouches.length在屏幕上没有任何手指,我不知道如何使用它来进行滚动动作...就像一个FYI,这个滚动会类似于我们在iPad上获得的固定高度div滚动(溢出:自动),iPad提供了开箱即用的功能..

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以稍后触发preventDefault ,也可以选择。 确定您是否首先想要自定义/拖动行为。

这样的事情:(我不知道这个确切的代码是否会起作用,因为我现在无法测试它,这假设你使用jQuery,我不知道手指数量的事件属性,但只是给予你的主意:))

$('#SomeElement').TouchMove(
   function(e)
     {
        if( /* number of fingers equals one */ )
        { 
          e.preventDefault()
          //more element-drag code could go here
          return;
        }
     }
);