私はまったく同じ問題を抱えていました。以下のように修正しました。
var disableScroll = false;
var scrollPos = 0;
function stopScroll() {
disableScroll = true;
scrollPos = $(window).scrollTop();
}
function enableScroll() {
disableScroll = false;
}
$(function(){
$(window).bind('scroll', function(){
if(disableScroll) $(window).scrollTop(scrollPos);
});
$(window).bind('touchmove', function(){
$(window).trigger('scroll');
});
});
タッチムーブは、タッチ移動が完了するまで解雇されていないウィンドウのスクロールイベントとして窓にバインドされたので、これはiOSのよりスムーズな体験を可能にされます!
これは完璧な解決策ではありませんが、ページをスローすることはできますが、スローが完了すると(ウィンドウスクロールイベントが発生すると)目的の位置に戻ります。これは、iOSブラウザが多くのイベントを取り除いてパフォーマンスを向上させるためです。また、ページがスローされている間、setTimeout関数とsetInterval関数は起動せず、ループもオプションではありません。
ここをクリックhttp://jsfiddle.net/8T26k/
ページをオーバーフローさせるコンテンツを追加しないでください。いくつかのコンテキストとユースケースがここで役立ちます。 – deceze
これはうまくいきませんが、ビューポートをカバーする透明なオーバーレイdivを追加しようとします。 iOS上でドラッグすると、おそらく何もしないdivをスクロールしようとします。 –
これを試してください:* {overflow:hidden; } –