2011-07-21 33 views
0

可以说我有一个包含多行的框/表。这些行是可拖动的。有关iPad Safari事件处理程序的问题

现在我有一个JS,我已经实现了touchstart,touchmove,touchend为iPad事件处理程序....他们基本上只是这些事件映射到对应的鼠标事件,比如鼠标悬停,鼠标按下,鼠标松开,等

这是我的问题;

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

现在我明白,我不能同时使用单个手指的动作(拖动/滚动).. 所以我想实现/有一个滚动动作时,使用2个手指..(另一种情况下,即单指,它应该做的拖动动作)

现在我知道event.touches.length/event.targetTouches.length在屏幕上不给手指,我不知道如何使用它来执行滚动操作...仅供参考,这种滚动将类似于我们在iPad上获得的固定高度div滚动(溢出:自动),即iPad提供的开箱即用。

谢谢。

回答

0

您可以防火默认以后的,以及可选的。 搞清楚你是否首先想要自定义/拖拽行为。

这样的事情:(我不知道这个确切的代码将工作,因为我现在不能测试它,这假定你使用jQuery,并且我不知道事件属性的手指数量,但只是为了给你一个想法:)

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

Thx为您的答复...然而,我想要的是,如果没有。的手指超过1,整个视图应该像滚动手指一样滚动... – testndtv

+0

这意味着如果手指的数量只是一个,您需要防止/停止默认事件,对吗? 我有点困惑-_o –

+0

*或*您可以将这些项目放在自己的滚动框架中,默认情况下启用双指滚动要求,但这可能会导致项目拖动行为出现问题。 –