2011-10-28 8 views
7

iScroll.jsを使用して、モバイルページ上のアイテムのカルーセルをスクロールしています。私は、垂直方向の動きをリッスン以下の修正を発見し、制御することiScrollスクリプトを停止し、ネイティブ垂直スクロールが起こるせる:iScroll - ネイティブの垂直スクロールを維持 - AndroidではなくiOSで動作します。

 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) {} 
    } 

でテストするとき、それはいくつかの問題を持っていたとして、私は試してみる{}キャッチ{}を使用していますブラウザ(定義されていない点について不平を言う)。

私が抱えている問題は、iOSでうまく動作し、いくつかのiデバイスでテストされていますが、Androidではそれほど良くありません。ユーザーがカルーセルに指を置いて開始して、ページを垂直方向にスクロールしようとすると、iScrollがまだコントロールしているので、ページはスクロールしません。

どのように私はそれが間違っているかもしれない方向へのAndroid、または任意のポインターで動作するように得ることができますか?

編集:

いくつかのデバッグ、これが機能しない理由私はおそらく発見しました。ユーザーがiOSの画面に触れている間に座標が更新されていますが、Androidでは最初の座標セットのみがキャッチされています。なぜこれがどんなアイデアですか?

+0

あなたは 'myScroll.disable()'と 'myScroll.enable()'を使ってみましたか? –

答えて

0

onBeforeScrollMoveのスコープに「ポイント」がないようです。 また、一部のAndroidデバイスはマルチタッチでクリックイベントを呼び出すことがあります(これは確認できませんが、プラットフォームの断片化のために理論化するだけです)

すぐにリリースされる素敵なスクリプトがあります。タッチの識別子プロパティとして「マウス」を使用するユニークなマルチタッチイベントです。デバッグに役立つかもしれません。私は明日の夜までにプロジェクトをオンラインにしようとします。

それが追加されるアップデートとプロジェクトの数のために当然だが、ここのリンクです:

https://github.com/skhameneh

EDIT:修正、あなたも「ポイント」を更新していますか?これはコードのこの部分の外にスコープされ、内部で変更されたようです。残りのコードを投稿した場合は参考になるかもしれません。

関連する問題