4

有没有办法在滚动 div 中禁用反弹效果?

到目前为止,我已经尝试过这些东西,但都没有奏效。请帮忙!

如何在移动 Web 应用程序中禁用 iPhone 上的垂直弹跳/滚动

无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹

ipad safari:禁用滚动和反弹效果?

滚动时禁用 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文件并将键UIWebViewBounce设置为NO

于 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

根据您的评论,您使用的代码完全是禁用滚动。如果您想要滚动,但没有反弹效果,请尝试以下操作:

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 回答
1

这将帮助您将 .scroll 类放置在您希望仍然滚动的元素上。

发生的事情是默认情况下禁用所有触摸动作。如果您希望滚动的元素上有 .scroll 类,那么它将门设置为 true 以允许它通过。

在触摸结束时,您将门重置为假。

这适用于 IOS5 和 6,并且可以在 Chrome 和 Safari 中运行

查看@这篇文章以扩展它
如何在滚动 DIV 元素时防止页面滚动?

唯一需要注意的是,如果您过度滚动可滚动元素,则弹性效果允许滚动向上传递,而滚动设置为 true。手动设置滚动位置会被可怕的反弹效果覆盖。
我敢打赌,那些 Apple friggers 有一个原生的滚动实现,在设定的时间内运行,每一步都硬连接。

所以如果你滚动到 -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 回答
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 回答