【问题标题】:WKWebView in Swift not working. Doesn't show html stringSwift 中的 WKWebView 不起作用。不显示 html 字符串
【发布时间】:2020-10-20 11:46:10
【问题描述】:

我在表格视图单元中包含一个 wkWebView,它可以自行调整大小并通过可分页控制器填充。它可以根据是否交付的 html 字符串启用和禁用。该单元是通过程序设计的。

我已经按照网上看到的许多示例设置了所有内容。但它没有显示任何内容,只是纯空白。 我不知道,我做错了什么。也许有人可以给我一个提示。

以下是有关 webview 的代码部分:

  private let webView:WKWebView = { () -> WKWebView in
    let webConfiguration = WKWebViewConfiguration()
    let webView = WKWebView(frame: .zero, configuration: webConfiguration)
    //webView.navigationDelegate = self
    webView.translatesAutoresizingMaskIntoConstraints = false
    return webView
}()

 func update(entity: Codable) {
    guard let news = entity as? NewsStream else {
        print("not a news stream!")
        return
    }
    if news.category == nil {
        news.category = news.widgetType
    }
    //Set global news variable
    self.news = news

    createWebView()
    }

 func createWebView(){
    webView.isHidden = true
    if let html = news?.html, let link = news?.webLink {
        if !html.isEmpty{
            webView.isHidden = false
            // let html2 = "<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>"
            webView.loadHTMLString(html, baseURL: Bundle.main.bundleURL)
            //        let myURL = URL(string: "https://www.apple.com")
            //                let myRequest = URLRequest(url: myURL!)
            //                webView.load(myRequest)
            webView.frame = CGRect(x: 0, y: currentYPos, width: contentView.frame.width, height: 400)
            currentYPos = currentYPos + webView.frame.height
            webView.backgroundColor = UIColor.green
            webView.tintColor = UIColor.orange
            webView.navigationDelegate = self
        }
    }
}

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    
          self.webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
                    if complete != nil {
                        self.webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (height, error) in
                            self.webView.frame = CGRect(x: 0,
                                                        y: self.webView.frame.origin.y,
                                                        width:self.webView.frame.width,
                                                        height: height as! CGFloat)
                        })
                    }
    print("Webview Did load")
    print(webView.frame)
    })
}

【问题讨论】:

  • 你能显示你在单元格中添加webViiew的代码吗?
  • 您的网页视图可能有错误(零)大小。你告诉它它应该使用约束(translatesAutoresizingMaskIntoConstraints = false),但是你正在设置框架而不是设置任何约束。你不应该手动设置scrollHeight 之类的东西。
  • Dosen't translatesAutoresizingMaskIntoConstraints = false 的意思是,它不应该使用约束?我在这个单元格中手动添加所有尺寸,它可以工作。我有这个理由。约束无法正确布局(或者我无法正确设置 - 无论如何。)单元格只有一个约束。而已。那么为什么你认为大小为零?我将带框架的尺寸设置为不同的尺寸以进行检查。覆盖的区域是可见的,但里面什么都没有
  • @koen,你是对的!那个确实不见了!愚蠢的错误....

标签: ios swift uitableview wkwebview


【解决方案1】:

尝试使用它。

if let bodyText = news.bodyText {
            myWebview.loadHTMLString(bodyText, baseURL: nil)
 }

【讨论】:

  • 你能解释一下这个答案吗?似乎假设 NewsStream 有一个 bodyText 属性。我在代码中没有看到任何暗示这一点的东西。你还看到了什么?
  • news.html 实际上提供了这样的 html 正文:

    我的第一个标题

    我的第一段。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多