在 iOS webkit webview 中隐藏滚动视图和滚动条

Posted

技术标签:

【中文标题】在 iOS webkit webview 中隐藏滚动视图和滚动条【英文标题】:Hide scrollview and scrollbar in iOS webkit webview 【发布时间】:2019-05-25 14:52:53 【问题描述】:

我最近刚刚将我的 ios UIWebview Objective-c 迁移到 WKWebkit swift,现在面临的问题是如何从我加载的网站中隐藏滚动条。我已经尝试了任何方法,但都不起作用,请任何人帮助我。

我已在How to hide scrollbar in WebView? 此处执行此步骤,问题和已接受的答案都对我不起作用。

请我知道这可能是一个重复的问题,但我已经尝试了很多帖子来解决这个问题。

var lastOffsetY :CGFloat = 0
override func viewDidLoad() 
   super.viewDidLoad()
   webViewSetup()

在 webViewSetup 中

func webViewSetup()
  webView.scrollView.delegate = self      

在视图中会出现

override func viewWillAppear(_ animated: Bool) 
        super.viewWillAppear(animated)
        let scrollView = webView.subviews[0] as? UIScrollView
        webView.scrollView.contentSize = CGSize(width: webView.frame.size.width, height: webView.scrollView.contentSize.height)
        scrollView?.bounces = false
        scrollView?.decelerationRate = .fast
        scrollView?.showsHorizontalScrollIndicator = false
        webView.scrollView.showsHorizontalScrollIndicator = false
        webView.scrollView.showsVerticalScrollIndicator = false
        webView.scrollView.alwaysBounceHorizontal = false
        webView.scrollView.bounces = false
    

在scrollViewDidScroll中

func scrollViewDidScroll(_ scrollView: UIScrollView) 

        if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) 
            scrollView.setContentOffset(CGPoint(x:scrollView.contentOffset.x, y:scrollView.contentSize.height - scrollView.frame.size.height), animated: false)
        
    

//FIXING SCROLL VIEW
//Delegate Methods
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
    lastOffsetY = scrollView.contentOffset.y


//FIXING SCROLL VIEW
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView)
    let hide = scrollView.contentOffset.y > self.lastOffsetY
    self.navigationController?.setNavigationBarHidden(hide, animated: true)

【问题讨论】:

【参考方案1】:

关闭网页视图的滚动:

webView.scrollView.isScrollEnabled = false

如果您提供的代码仅用于关闭滚动视图,则该代码在很大程度上可以被剔除为以下内容:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate 

  var webView: WKWebView!

  //configure webView
  override func loadView() 
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    webView.scrollView.isScrollEnabled = false
    view = webView
  

  override func viewDidLoad() 
    super.viewDidLoad()

    if let url = URL(string: "https://www.***.com") 
      webView.load(URLRequest(url: url))
    
  

【讨论】:

以上是关于在 iOS webkit webview 中隐藏滚动视图和滚动条的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 WebKit库之——WKWebView篇

在 swift 4 中使用 webkit 在 webView 中导航时创建活动指示器

MAUI Blazor如何隐藏滚动条

WebKit 的 WebView (OS X) 是不是能够显示 docx 文件?

如何使用 Swift 制作具有 iPhone X 安全区域约束的 Webkit webView?

iOS标头中的WebKit错误域和代码?