【问题标题】:iPhone - Is it possible to hide native scrollbar in UIWebView?iPhone - 是否可以在 UIWebView 中隐藏本机滚动条?
【发布时间】:2010-10-25 08:30:55
【问题描述】:

我想隐藏滚动 UIWebView 时出现的本机滚动条/滚动条,但仍保持滚动功能不变。这可能吗?

提前致谢,

威廉

【问题讨论】:

  • 适用于使用 iOS 5.0 及更高版本的任何人。考虑更新的答案。

标签: iphone uiwebview


【解决方案1】:

看来这个问题需要更新答案

您可以直接访问与 Web 视图关联的滚动视图。 (只读) 在 iOS 5.0 以上。 我认为开发人员不应该支持 iOS 5.0 之前的任何东西,除非在特殊情况下。

来自 Apple 开发者文档。

@property(nonatomic, readonly, retain) UIScrollView *scrollView
Discussion
Your application can access the scroll view if it wants to customize the scrolling behavior of the web view.

Availability
Available in iOS 5.0 and later.
Declared In
UIWebView.h

现在你可以直接写这样的东西:

webView.scrollView.showsHorizontalScrollIndicator = NO;
webView.scrollView.showsVerticalScrollIndicator = NO;

无需去webView的子视图。

【讨论】:

    【解决方案2】:

    UIWebView 不直接从UIScrollView 继承,但您可以在UIWebView 子视图上使用UIScrollView 属性:

    [(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsHorizontalScrollIndicator:NO];
    [(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsVerticalScrollIndicator:NO];
    

    不知道这是否可以接受,但它构建得很好,我认为它应该可以工作。如果这对您有用,请报告。

    还可以考虑通过 bugreport.apple.com 向 Apple 提交功能请求,以将此属性添加到未来的 UIWebView 实施中。

    【讨论】:

    • 此代码适用于 iOS 4.0 - 5.0,但不适用于 iOS 3.1.3。在 iOS 4.0-5.0 [webview.subviews objectAtIndex:0] 返回 _UIWebViewScrollView 的实例,该实例可以转换为 UIScrollView,但在 iOS 3.1.3 中它返回 UIScroller 的实例,该实例无法转换为 UIScrollView。
    • Alex Reynolds,虽然我已经提供了答案,但因为您的答案在顶部。能不能更新一下。在 iOS 5.0 及更高版本中。 webview 的 scrollView 可以作为只读属性访问。
    【解决方案3】:

    那样做:

    for (id subview in self.myWebView.subviews) {
        if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
            ((UIScrollView *)subview).bounces = NO; 
            ((UIScrollView *)subview).showsVerticalScrollIndicator = NO;    
            ((UIScrollView *)subview).showsHorizontalScrollIndicator = NO;  
        }
    }
    

    【讨论】:

      【解决方案4】:

      在斯威夫特中:

          webView.scrollView.showsHorizontalScrollIndicator = false
          webView.scrollView.showsVerticalScrollIndicator = false
      

      【讨论】:

        【解决方案5】:

        如果有人正在寻找 swift 解决方案,那么下面是 swift 3.0

        的代码
        yourWebView.scrollView.showsHorizontalScrollIndicator = false
        yourWebView.scrollView.showsVerticalScrollIndicator = false
        

        【讨论】:

          【解决方案6】:

          这里似乎是一个答案的开始:

          http://discussions.apple.com/thread.jspa?threadID=1781730

          如果您禁用用户交互,这似乎会移除滚动条(如果您显示的网页不超过屏幕高度,这可能没问题)。

          似乎还描述了一种 javascript hack,但我没有掌握它:/(但是,您需要有权访问您尝试显示的网页,这可能不是您的情况....)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-05-16
            • 2012-02-27
            • 1970-01-01
            • 2011-12-14
            • 1970-01-01
            • 2017-05-29
            • 1970-01-01
            相关资源
            最近更新 更多