迅速的iOS 11.2 WKWebView不显示

时间:2018-06-21 02:12:34

标签: ios swift wkwebview

我正在尝试在我的应用程序中实现一个简单的Web浏览器。 因为我需要控制cookie,所以我决定使用WKWebView。

官方示例运行良好,但是示例1)不使用情节提要2)将视图直接设置为网络视图

因此我将WKWeView添加到情节提要中并连接到插座,然后在viewDidLoad中加载URL:

class BrowserViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        print("browser view loaded")
        webView.uiDelegate = self
        webView.navigationDelegate = self

        let myURL = URL(string: "https://www.youku.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)

    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

我的故事板:

storyboard

但是,当我在模拟器中运行应用程序时,WKWebView不会出现:

enter image description here

如何解决此问题?谢谢。


更新:

这是视图的布局和约束

enter image description here

更新:

因此,我删除了所有不必要的约束,并且布局似乎已修复。但是,网络视图仍为空白。

如果我在view = webView的末尾添加一行viewDidLoad。网页正确呈现。

(出于某些原因,图像会上传,我稍后会再试)

更新:

不幸的是,将所有内容都移至viewWillAppear也不起作用。

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("browser view loaded")

        webView.uiDelegate = self
        webView.navigationDelegate = self

        let myURL = URL(string: "https://www.bing.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }

Webview仍然是空白。

3 个答案:

答案 0 :(得分:0)

删除IBOutlet,然后尝试再次连接到插座。

可能是

import UIKit
import WebKit

class ViewController: UIViewController {
    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        print("browser view loaded")
        webView.uiDelegate = self
        webView.navigationDelegate = self

        let myURL = URL(string: "https://www.youku.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

extension ViewController: WKUIDelegate {

}

extension ViewController: WKNavigationDelegate {

}

enter image description here

enter image description here

enter image description here

enter image description here

答案 1 :(得分:0)

我认为您的问题与StackView选项有关。请同时显示您对StackView设置了哪些设置?对齐和分配是主要内容。

尝试设置:

Alignment -> Center Distribution -> Fill

从工具栏和WebView中删除所有约束,并仅保留工具栏高度=56。这是StackView内部唯一需要的约束。另外,请确保保留StackView的约束,因为这些约束定义了其中包含的对象的约束。 确保视图周围没有红色边框(如果它是红色的,则说明您丢失了某些东西)。

答案 2 :(得分:0)

我找到了使它工作的方法,但是其背后的原因仍然是个谜。

显然,如果将WKWebView从堆栈视图中移出,它将使网页呈现得很好。

layout

screen

P.S。网址已更改为https://www.bing.com