允许在UIWebView上禁用滚动?

jsa*_*our 90 scroll uiwebview ios

我必须在文章UITableView下面显示一篇网络文章.

我找到的唯一选项是UIWebView在tableView标题中显示文章.

为了做到这一点,我必须获得webView内容的高度,我必须禁用webView的滚动.

我发现了两种禁用滚动的解决方案:

for (id subview in webView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).scrollEnabled=NO;
Run Code Online (Sandbox Code Playgroud)

或者在JavaScript中:

<script type="text/javascript">
touchMove = function(event) {
    event.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

我听说Apple禁止第一个解决方案,但我没有任何证据.使用此解决方案会拒绝我的申请吗?如果是这样,我可以使用第二种解决方案而不被拒绝吗?

Ale*_*ciu 295

从iOS5开始,我们可以直接访问UIWebView的滚动视图.
你可以像这样禁用滚动和反弹:

webView.scrollView.scrollEnabled = NO; 
webView.scrollView.bounces = NO;
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,这正是我想要的.@jsddour,你应该把这个答案标记为已接受! (3认同)

Rya*_*ley 26

由于这个问题仍然适用,有一种新方法可以做到!(iOS 7.0+,也许iOS 6也未确认)

webView.scrollView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

照顾自己 :)


Esh*_*nya 20

您只需将Web视图用户交互属性设置为no ie即可

webView.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

它非常简单,工作正常,谢谢:)

  • 但是,这会阻止链接被轻敲. (27认同)

小智 12

对于所有ios版本,您可以使用此代码而不是setScrollEnabled:

for (UIView *view in webview.subviews) {
    if ([view isKindOfClass:[UIScrollView class]]) {
       UIScrollView *scrollView = (UIScrollView *)view;
       scrollView.scrollEnabled = NO;
    }
}
Run Code Online (Sandbox Code Playgroud)


Gob*_*i M 12

使用这个 <body ontouchmove="event.preventDefault()">


Ahm*_*adi 9

SWIFT 3版本

    webView.scrollView.bounces = false
    webView.scrollView.isScrollEnabled = false
Run Code Online (Sandbox Code Playgroud)


Mar*_*tin 7

我认为Javascript

<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

是最好的解决方案.

确实 :

你的第一次考试,或者

[[[WebView subviews] lastObject] setScrollingEnabled:NO];
Run Code Online (Sandbox Code Playgroud)

一个(相同的东西)可能被拒绝,因为没有记录,或使你的应用程序崩溃进一步的ios更新.

而且

[[myWebView scrollView] setBounces:NO];
Run Code Online (Sandbox Code Playgroud)

方法不适用于iOS <5.


the*_*ude 5

[[[WebView subviews] lastObject] setScrollingEnabled:NO];
Run Code Online (Sandbox Code Playgroud)

为我排序的

  • 因为它不是暴露的API,所以依赖于它是错误的. (4认同)
  • 不,你不应该这样做.正如迪帕克所说,你不能依赖Apple的一个UI元素中的未记录的子视图内部顺序.如果他们在将来的操作系统更新中更改内部结构,您的应用程序将崩溃.他们特别警告在多个地方这样做,许多应用程序因为他们这样做而在升级到iPhone OS 3.0时破产. (3认同)

Jan*_*les 5

第一个被Apple拒绝.今天早上发生在我身上.


maf*_*nya 5

[[myWebView scrollView] setBounces:NO];