2012-03-13 18 views
4

私は現在、phonegap 1.5とjQuery Mobileを使用してiOSアプリケーションを開発中です。jQuery Mobile - スクロールを無効にするページのドラッグを有効にする

私たちは、以下のJavaScriptを使用してページのドラッグを無効にすることができていることを理解する:

function preventBehavior(e) 
{ 
    e.preventDefault(); 
}; 

document.addEventListener("touchmove", preventBehavior, false); 

以上が有効になっている場合は、コンテンツのスクロールは動作しません。

は、私はまだスクロールできるようにページをドラッグするからユーザーを防ぐ方法はありますか?

私はiScrollの使用を試みました。そのためには、手動で行う必要があります。

scrollbar.refresh(); 

各ページのpageinitイベントの下にあります。残念ながら、私はスクロールが必要な多くのページを持っています。 =(

私はサードパーティ製のプラグインを使用せずにスクロールを有効にするために使用できる他の方法がありますか?

答えて

5

<script type="text/javascript"> 
    touchMove = function(event) { 
     event.preventDefault(); 
    } 
</script> 

HTMLヘッドにこれを追加、その後に

ontouchmove="touchMove(event)" 

を設定あなたがドラッグを無効にしたいすべてのページのための最も外側のdiv例:。

<div id="mypage" ontouchmove="touchMove(event)"> 

ドラッグはontouchmove =「touchMove(イベント)」を持っていないページで可能になります。

この解決策では、のphonegapのtempleteコードを関数preventBehavior()に含める必要があります。削除するか、それをコメントアウト:

$('body').on('touchmove', function(e) { 
    e.preventDefault(); 
}); 

注:私はjQueryのモバイルと、次の(DOM準備で実行されるが)私の作品使用していhttp://phonegap.pbworks.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications

+0

素晴らしい解決策のようですが、誰かが実際にこれを働かせていますか?私にとって運がない。 – kaleazy

1

:ここ

//function preventBehavior(e) 
//{ 
// e.preventDefault(); 
//}; 
//document.addEventListener("touchmove", preventBehavior, false); 

より詳細な情報falseを返すか、e.stopPropagation()を呼び出すと、身体の子どもたちも 'touchmove'イベントに応答しなくなります。おそらくあなたは、イベントのバブリングを止めているイベントハンドラの1つでそれをやっています。

2
$(document).delegate('.ui-page', 'touchmove', false); 

これは動作しやすく、タッチを無効にしたいかどうかによって異なります。

関連する問題