2011-10-28 54 views
7

我使用iScroll.js滾動移動頁面上的項目輪播。我發現下面的修復偵聽垂直移動和停止iScroll腳本獲取控制,讓本地垂直滾動發生:iScroll - 保留本機垂直滾動 - 適用於iOS,不適用於Android

 onBeforeScrollStart: function(e) { 
     try { 
      point = e.touches[0]; 
      pointStartX = point.pageX; 
      pointStartY = point.pageY; 
     } catch(e) {} 
     null; 
    }, 
    onBeforeScrollMove: function(e) { 
     try { 
      deltaX = Math.abs(point.pageX - pointStartX); 
      deltaY = Math.abs(point.pageY - pointStartY); 
      if (deltaX >= deltaY) { 
       e.preventDefault(); 
      } else { 
       null; 
      } 
     } catch(e) {} 
    } 

我使用try {}趕上{}當它在測試的時候有一些問題一個瀏覽器(抱怨點沒有被定義)。

我遇到的問題是,它在iOS上運行良好,在幾個智能設備上測試過,但在Android上並不是那麼好。如果用戶試圖垂直滾動頁面,將手指放在旋轉木馬上,則頁面不會滾動,因爲iScroll仍然有控制權。

任何想法如何讓它在Android上工作,或任何指向它可能會出錯的指針?

編輯:

一些調試,我發現可能爲什麼這不起作用。當用戶在iOS上觸摸屏幕時座標正在更新,但在Android上,只有第一組座標被捕獲。任何想法,爲什麼會這樣?

+0

您是否嘗試過使用'myScroll.disable()'和'myScroll.enable()'? –

回答

0

您的onBeforeScrollMove範圍內似乎沒有「指向」範圍。另外,一些Android設備可能通過多點觸控(我不能確認這一點,但只是因爲平臺碎片而導致理論化)調用點擊事件。

我有一個很好的腳本,我將很快發佈,需要點擊事件並進行模擬使用「鼠標」作爲觸摸的標識屬性的獨特多點觸控事件,這可能對調試有幫助。我會盡量在明天晚上在網上發佈這個項目。

這是因爲對於許多更新和添加項目,但這裏有一個鏈接:

https://github.com/skhameneh

編輯:校正,你甚至可以更新「點」?它似乎被限制在這段代碼之外並在其內部進行了更改。如果您發佈了其他代碼,可能會有所幫助。

相關問題