当前位置:  开发笔记 > IOS > 正文

阻止UIWebView垂直"弹跳"?

如何解决《阻止UIWebView垂直"弹跳"?》经验,为你挑选了6个好方法。

有谁知道如何阻止UIWebView垂直弹跳?我的意思是当用户触摸他们的iPhone屏幕时,向下拖动他们的手指,webview在我加载的网页上方显示一个空白点?

我已经看过以下可能的解决方案,但它们都不适用于我:

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

http://forums.macrumors.com/showthread.php?t=619534

如何阻止UIScrollView水平弹跳?



1> Mirek Rusin..:
for (id subview in webView.subviews)
  if ([[subview class] isSubclassOfClass: [UIScrollView class]])
    ((UIScrollView *)subview).bounces = NO;

...似乎工作正常.

它也将被App Store接受.

更新:在iOS 5.x +中有一种更简单的方法 - UIWebView具有scrollView属性,因此您的代码可能如下所示:

webView.scrollView.bounces = NO;

同样如此WKWebView.


这对我来说很好.为方便起见,我在`UIWebView`中添加了一个类别,所以我可以在任何地方调用`[webView setBounces:NO]`.
这个修复似乎只适用于我的OS 4.1模拟器,而不是我的OS 3.1.3 iPhone.有人知道这个修复程序是否只适用于特定的OS版本吗?

2> Brad Parks..:

我正在研究一个项目,它可以轻松地创建Web应用程序,作为iPhone上名为QuickConnect的完全成熟的可安装应用程序,并找到一个有效的解决方案,如果您不希望屏幕可以滚动,在我的情况下我没有.

在上面提到的项目/博客文章中,他们提到了一个javascript函数,你可以添加它来关闭弹跳,这基本归结为:

    document.ontouchmove = function(event){
        event.preventDefault();
    }

如果你想了解更多关于它们如何实现它的信息,只需下载QuickConnect并检查它....但基本上它所做的就是在页面加载时调用javascript ...我试过把它放在我的文档的头部,它似乎工作正常.


你可以给出完整的答案,首先我不想下载另一个应用程序的整个源代码,我甚至找不到它.您的回答依赖于另一个网站与您回答时的相同.
正如Jessedc所说,这将停止垂直滚动,而不仅仅是弹跳.这意味着如果您有需要滚动的div,它将不会滚动.

3> Zigglzworth..:

我所做的就是:

UIView *firstView = [webView.subviews firstObject];

if ([firstView isKindOfClass:[UIScrollView class]]) {

    UIScrollView *scroll = (UIScrollView*)firstView;
   [scroll setScrollEnabled:NO];  //to stop scrolling completely
   [scroll setBounces:NO]; //to stop bouncing 

}

对我来说工作正常...此外,这个问题的答案是苹果将拒绝,如果你在你的iPhone应用程序中使用它.


这真的不是一个好主意.你依赖的事实是`UIScrollView`是`UIWebView`的第一个子视图,现在可能就是这种情况,但这可能很容易在iOS或特定配置的未来(甚至是次要的)更新中改变.你应该真的对`subviews`进行`for`迭代才能真正找到'UIScrollView`(它真的没那么多工作,至少你保证得到一个'UIScrollView`而不会崩溃你的程序......
这是最好,最简单的方法.这应该是公认的答案!+1
不要这样做 - 我的应用程序因使用第一行而被拒绝.浪费了这么多时间给我.我用[[webView.subviews lastObject] setScrollEnabled:NO]; 而苹果称这是一个私人API,因此拒绝了它; 我即将重新提交,但使用"userInteractionEnabled:NO",因为我不需要在应用程序中的任何活动链接.
我使用这个在appstore上有4个应用程序.您的应用程序因其他原因被明确拒绝.这不是私有API.

4> jstr..:

在iOS 5 SDK中,您可以直接访问与Web视图关联的滚动视图,而不是遍历其子视图.

因此,要在滚动视图中禁用"弹跳",您可以使用:

myWebView.scrollView.bounces = NO;

请参阅UIWebView类参考.

(但是如果你需要在5.0之前支持SDK的版本,你应该遵循Mirek Rusin的建议.)



5> Ego Slayer..:

斯威夫特3

webView.scrollView.bounces = false



6> 小智..:

警告.我使用了setAllowsRubberBanding:在我的应用程序中,Apple拒绝了它,声明不允许使用非公共API函数(引用:3.3.1)

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有