WKWebView不能显示网站(Swift 4,iOS 11,Xcode 9.3)

5

由于某种原因,我的应用程序中的WKWebView无法显示任何网站,例如“https://www.google.com.au”。

我尝试在info.plist中将“Allow Arbitrary Loads”更改为“YES”,但这并没有解决问题。

请帮忙!!!

我的代码:

import UIKit
import WebKit

class ViewController: UIViewController {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
}

Screenshot of StoryBoard: StoryBoard


你解决了这个问题吗?如果是,请更新并回答。我有类似的问题。谢谢! - Curious101
没有,我没有解决它。我不得不使用代码而不是故事板。谢谢。 - Matthew Cho
在我的情况下,这是通过在info.plist中设置NSAppTransportSecurity来解决的。 - tokentoken
你检查过你的系统是否启用了任何杀毒软件吗?我遇到了类似的问题,通过关闭我的 AVG 杀毒软件 WebShield 解决了这个问题。 - Vineeth
1
@Vineeth 是的,那就是问题所在。对于没有更新这篇文章的每个人,我深表歉意。如果出现相同的问题,并且您已经尝试了所有方法,就像 Vineeth 所说,很可能是因为某些反病毒软件的 Webshield 处于活动状态。 - Matthew Cho
3个回答

4

连接WKNavigationDelegate,这将修复网页无法加载的问题,请尝试下面的代码。在加载网页时抛出的任何错误将会在webViewDidFail委托中打印。

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.navigationDelegate = self
        webView.load(request)
    }
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        print(error)
    }
}

1
我尝试使用你的代码,但屏幕仍然是空白的(白屏),没有出现任何错误信息。 - Matthew Cho
尝试在“ViewWillAppear:Animated”方法之后调用“displayWebPage:”。 - byJeevan
你确定吗?不过对我来说好像没问题,请确认插座已连接。 - BXV
在ViewWillAppear之后调用函数不起作用,是的,我的插座已经连接。有可能不是我的代码有问题,而是Xcode设置或模拟器设置的问题吗? - Matthew Cho

2

设置 webView 代理。

    webView.UIDelegate = self
    webView.navigationDelegate = self

同时也可以尝试将您的域名添加到例外域名列表中

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>google.com.au</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

0

将你的控制器连接到 WKUIDelegate,在你的视图控制器中添加 loadView() 方法,并使用 WKWebViewConfiguration 初始化你的 Web 视图。

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    @IBOutlet weak var webView: WKWebView!
    
    var webView: WKWebView!
    
    override func loadView() {
        let myConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: myConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        displayWebPage()
    }

    private func displayWebPage() {
        let url = URL(string: "https://www.google.com.au")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
}

来源:WK Web View


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接