有谁知道如何阻止UIWebView垂直弹跳?我的意思是当用户触摸他们的iPhone屏幕时,向下拖动他们的手指,webview在我加载的网页上方显示一个空白点?
我已经看过以下可能的解决方案,但它们都不适用于我:
我最近一直在研究移动网络应用程序.我正在优化移动优先,现在专注于iPhone的iOS.我不想要原生应用程序的精确外观,但我认为原生的感觉是绝对重要的.我已经制作了标记和CSS以反映这个想法,让我留下这个(注释以更好地理解我后来遇到的问题):

这一切都没有问题,它还具有原生的感觉,静态页眉和页脚,以及可滚动的内部视图(由于-webkit-overflow-scrolling: touch).
任何使用iOS超过5分钟的人都知道,当你向上或向下滚动时,你会得到一些不错的动力滚动.此外,当您点击列表顶部时,您会获得良好的"反弹"效果:

我觉得这有助于定义iOS的感觉,这么小的细节可以走很长的路.幸运的是,如果您位于webapp中可滚动元素的列表顶部之下,并滚动到顶部,则会获得相同的效果.这是期望的行为:

但是,当您位于列表顶部并尝试重新创建相同的弹跳行为时,列表顶部(例如上面的设置.app),我们会得到以下行为,这是不希望的:

我在Stack Overflow上看过一些类似的 问题,但这些都选择禁用弹跳.我想知道是否可以保持弹跳,但总是让它发生body section section#main,而不是在webapp的chrome上.我不是在使用jQuery,所以我更喜欢使用直接JavaScript的答案(尽管CSS解决方案的奖励积分).
这是一个包含所有代码的GitHub 仓库(Sinatra,HAML和Sass;当前分支so),或者是带有损坏图像和链接的JSFiddle,但在iPhone上显示问题(最好添加到主屏幕进行测试).
在手机上(野生动物园,网页浏览,无论哪里), overflow:scroll并overflow-scrolling: touch给出一个非常流畅的滚动,这很酷.
但是,它使页面"反弹"(下面圈出的区域),当你不使用它时不是这种情况,但这使得体验不那么"原生"(更简单地说,就我可以有一个关于它的意见,绝对没有用)
有没有办法防止它发生?非常感谢您的帮助/提示/回复

我正在为iPad创建一个小的Web应用程序,我有几个元素,我阻止用户滚动,防止touchmove事件的默认.但是,我有一种情况,我需要用户能够滚动子元素.
我试过使用e.stopPropagation(); 但没有运气!我还尝试检测手指下的元素并放入e.preventDefault(); 在if语句中,但再次,没有运气.或者也许我只是混淆了......
有任何想法吗?从#fix div中删除.scroll div是最后的手段,因为它会引起各种令人头疼的问题.
编辑
我设法对它进行排序.好像我不明白使用.stopPropagation(); 哎呀!
工作代码:
<div id="fix">
<h1>Hi there</h1>
<div class="scroll">
<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>
</div>
<div class="scroll">
<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和Javascript:
$('body').delegate('#fix','touchmove',function(e){
e.preventDefault();
}).delegate('.scroll','touchmove',function(e){
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud) 是的我知道.这个问题之前已被问过一千次.感谢所有人,我能够找到一个解决方案,最终在<= iOS7中完成了我的工作.但是,在更新到iOS 8后 - 似乎没有任何效果!
在iOS7中对我来说非常有用
CSS
html, body, .scrollable {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
Run Code Online (Sandbox Code Playgroud)
jQuery的
$(function() {
$(document).on("touchmove", function(evt) { evt.preventDefault() });
$(document).on("touchmove", ".scrollable", function(evt) { evt.stopPropagation() });
});
Run Code Online (Sandbox Code Playgroud)
我试过的其他解决方案:
全部在这里:iPhone Web App - 停止正文滚动
在这里:iOS Safari - 如何禁用过度滚动但允许可滚动的div正常滚动?
和更多 ...
那么,有没有人知道iOS8兼容的禁用身体界限滚动 /反弹效果的方式(除了应用于phonegap项目的原生解决方案)?
在复习有关StackOverflow上该主题的许多问题和答案时,提供的所有解决方案均无法可靠地工作。所有CSS,JavaScript,jQuery和混合解决方案都至少存在一个缺陷,导致滚动无法有效禁用和/或切换。
我还在网上搜索了很多内容,但没有找到一个好的答案。
到目前为止,我具有此功能:
function toggleScroll(btn, item) {
$(btn).click(function() {
$(item).toggleClass("noscroll");
});
}
Run Code Online (Sandbox Code Playgroud)
...这会将a添加overflow: hidden;到我想要的任何类中onclick,并在第二次单击时将其删除。
问题是,此代码不适用于iOS设备。
如何在iOS设备上使用此功能?
理想情况下,我希望使用纯CSS解决方案。但是我知道这可能是不可能的,尤其是切换组件。
任何JavaScript或jQuery解决方案也都可以。
提前致谢!