4

スクロールdivでバウンス効果を無効にする方法はありますか?

これまで私はこれらのことを試しましたが、どれもうまくいきませんでした。助けてください!

モバイルWebアプリケーションでiPhoneの垂直バウンス/スクロールを無効にする方法

UIScrollViewおよびpagingEnabled=YESでバウンスを無効にできない

ipadサファリ:スクロールを無効にし、効果をバウンスしますか?

スクロール時にUITableViewの垂直方向のバウンスを無効にする

http://www.iphonedevsdk.com/forum/iphone-sdk-development/996-turn-off-scrolling-bounces-uiwebview.html

ありがとう!

4

5 に答える 5

6

Cordova 1.7を使用している場合は、Cordova.plistファイルを開き、キーUIWebViewBounceNOに設定するだけです。

于 2012-09-06T01:50:41.410 に答える
3

phoneGapプロジェクトのconfig.xmlファイルを開き、UIWebViewBounceをデフォルトのtrueからfalseに変更します。

    <preference name="UIWebViewBounce" value="false" />

デフォルトが真である理由を想像することはできません...

于 2013-03-06T08:11:05.833 に答える
1

これは、スクロールしたい要素に .scroll クラスを配置するのに役立ちます。

起こっていることは、すべてのタッチ移動がデフォルトで無効になっていることです。スクロールしたい要素に .scroll クラスがある場合、ゲートを true に設定して通過を許可します。

タッチエンドでは、ゲートを false にリセットします。

これは IOS5 と 6 で動作し、Chrome と Safari で動作する可能性があり

ます この記事を見て拡張して
ください How to prevent page scrolling when scrolling a DIV element?

これに対する唯一の問題は、スクロール可能な要素をオーバースクロールすると、スクロールが true に設定されている間、弾性効果によりスクロールがツリーを通過できることです。スクロール位置を手動で設定すると、恐ろしいバウンス効果によって上書きされます。
それらのAppleフリガーには、各ステップが固定された設定されたタイムアウトで実行されるスクロールのネイティブ実装があるに違いありませ

ん。したがって、-20までスクロールすると、各ステップがどこにあるかをチェックせずにループに固定されると思います。-20 -19 -18 などに順番にスクロールします。

これを回避する方法を考えなければなりません!(実際、それを入力して負荷をかけるのですが、私にはアイデアがあります!)

$(function(){
  var scroll = false
  var scroll_element;
  $('body').on('touchmove',function(e){
      if(!scroll){
      e.preventDefault()
      }
  })
  $('body').on('touchend',function(e){
      scroll = false
  })  
  $('.scroll').on('touchstart',function(e){
      scroll_element = this
      scroll = true
  })  
})
于 2013-02-19T11:34:35.670 に答える
1

あなたのコメントに基づいて、使用しているコードはスクロールを完全に無効にすることです。スクロールしたいが、バウンス効果がなければ、次のようにしてみてください。

var xStart, yStart = 0;

document.getElementById("scrollableDiv").addEventListener('touchstart',function(e) {
    xStart = e.touches[0].screenX;
    yStart = e.touches[0].screenY;
});

document.getElementById("scrollableDiv").addEventListener('touchmove',function(e) {
    var xMovement = Math.abs(e.touches[0].screenX - xStart);
    var yMovement = Math.abs(e.touches[0].screenY - yStart);
    if((yMovement * 3) > xMovement) {
        e.preventDefault();
    }
});

この解決策はこちらで見つかりました。それがあなたのために働くかどうか私に知らせてください。

于 2012-05-29T14:56:33.223 に答える
0

これが最善の方法ではないことはわかっていますが、うまくいきます。

これが私がしたことです-

#scrollableDiv {
    position:fixed;
    top:50px;
    width:300px;
    height:500px;
    word-wrap: break-word;
    overflow-y: scroll; 
}

document.getElementById("scrollableDiv").innerHTML = longText;
document.getElementById("scrollableDiv").scrollTop = 0;
于 2012-06-04T19:12:43.110 に答える