私はiOSとAndroidのモバイルウェブサイトで最も素晴らしいjavascriptツールiScroll4http : //cubiq.org/iscroll-4を使用しています。私のレイアウトは次のようになります。
水平方向にスクロール可能な領域は、次の設定でiScroll4を使用しています。
var myScroll = new iScroll('frame', { hScrollbar: false, vScrollbar: false, vScroll: false })
水平スクロール部分はうまく機能します。この問題は、ユーザーが水平スクロール領域に指を置いてページを上下にスクロールしようとしたときに発生します。そのため、同じ領域でネイティブの垂直スクロールとiScrollの水平スクロールが必要です。
私がこれまでに試したこと:iScrollコードでe.preventDefault()を削除します(ネイティブスクロールは可能ですが、両方の軸で可能です)。e.preventDefault()を削除してから、次の方法でページ全体の水平スクロールを無効にします。
var touchMove;
document.ontouchstart = function(e){
touchMove = e.touches[0];
}
document.ontouchmove = function(e){
var theTouch = e.touches[0] || e.changedTouches[0];
var Xer = rs(touchMove.pageX - theTouch.pageX).toPos();
var Yer = rs(touchMove.pageY - theTouch.pageY).toPos();
touchMove = theTouch;
if(Yer > Xer){ e.preventDefault(); }
}
何もしないようです。iScrollの水平スクロールを失うことなく、水平スクロール領域でネイティブの垂直スクロールを許可するにはどうすればよいですか?私はここで本当に困惑しています。前もって感謝します。
(レコードの場合、rs(foo).toPos()は、値に関係なくfooを正の数にする関数です)。