2011-07-21 71 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

*或*您可以將這些項目放在自己的滾動框架中,默認情況下啓用雙指滾動要求,但這可能會導致項目拖動行爲出現問題。 –