WebView未加载Xcode 9模拟器中的特定URL

时间:2017-12-10 04:30:29

标签: ios swift webview ios-simulator

我正在尝试使用swift 4中的webView加载URL。我尝试https://www.google.co.in并且它运行正常。并且特定URL的移动网站可以正常使用android。 但是当我在模拟器中尝试这个时,它会永远加载。

我的代码如下:

import UIKit

class WebViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var webView: UIWebView!

    let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

  override func viewDidLoad() {
        super.viewDidLoad()

        webView.delegate = self
        if let url = URL(string: "https://www.myurl.com") {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }


    }


   public func webViewDidStartLoad(_ webView: UIWebView)
    {
        activityIndicator.center =  CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2)
        self.view.addSubview(activityIndicator)
        activityIndicator.color = UIColor.red
        self.activityIndicator.startAnimating()
    }
    public func webViewDidFinishLoad(_ webView: UIWebView)
    {
        self.activityIndicator.stopAnimating()
    }

}

我认为我的代码不对。但我想知道我是否可以做任何事情让它在模拟器上运行。

由于

1 个答案:

答案 0 :(得分:3)

我刚用你的代码做了一个小项目,在模拟器中没问题,https://www.google.co.in加载得很好。

我注意到你提到你正在使用Swift 4,我认为你应该考虑使用WebKit View(WKWebView),因为UIWebView已被弃用。在Apple's documentation中,您可以看到如何实现它,它非常直接。

如果您的证书不受信任,则必须将Info.plist App Transport Security SettingsAllow Arbitrary Loads添加到YES。 (不推荐这样做)。

代码非常简单,试一试:

import UIKit
import WebKit

class WebViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
    @IBOutlet weak var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        webView.navigationDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

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


    func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        if let serverTrust = challenge.protectionSpace.serverTrust {
            completionHandler(.useCredential, URLCredential(trust: serverTrust))
        }
    }
}