未调用UIWebView webViewDidLoadFinish方法

今天晚上我一直在玩networking浏览器,但遇到了一些问题。

出于某种原因,我无法获得webViewDidStartLoad或webViewDidFinishLoad方法触发。 在我的故事板中,我有一个叫做webView的出口,链接到我的UIWebView元素。

有没有人能够帮助我做我做错了什么?

这是我的viewController.swift文件:

import UIKit class ViewController: UIViewController, UIWebViewDelegate { @IBOutlet var webView : UIWebView var url = NSURL(string: "http://google.com") override func viewDidLoad() { super.viewDidLoad() //load initial URL var req = NSURLRequest(URL : url) webView.loadRequest(req) } func webViewDidStartLoad(webView : UIWebView) { //UIApplication.sharedApplication().networkActivityIndicatorVisible = true println("AA") } func webViewDidFinishLoad(webView : UIWebView) { //UIApplication.sharedApplication().networkActivityIndicatorVisible = false println("BB") } } 

尝试这个!

 var req = NSURLRequest(URL: url) webView.delegate = self webView.loadRequest(req) 

我遇到了同样的问题,即使我确认了UIWebViewDelete自己并实现了它的方法。

 //Document file url var docUrl = NSURL(string: "https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjjwPSnoKfNAhXFRo8KHf6ACGYQFggbMAA&url=http%3A%2F%2Fwww.snee.com%2Fxml%2Fxslt%2Fsample.doc&usg=AFQjCNGG4FxPqcT8RXiIRHcLTu0yYDErdQ&sig2=ejeAlBgIZG5B6W-tS1VrQA&bvm=bv.124272578,d.c2I&cad=rja") let req = NSURLRequest(URL: docUrl!) webView.delegate = self //here is the sole part webView.scalesPageToFit = true webView.contentMode = .ScaleAspectFit webView.loadRequest(req) 

上面的逻辑与我从快速谷歌search得到的testingURl完美地工作。

但是,当我用我的replace。 webViewDidFinishLoad永远不会被调用。

那么我们如何解决?

在支持方面,我们不得不将头文件中的内容types定义为文档 。 它的作用就像魅力。

所以请确保你的服务器后端。

正如其他人指出的那样,设置UIWebView的委托并符合UIWebViewDelegate协议是最好的解决scheme。

对于其他人谁可能在这里。 我已经把我的委托方法在一个private extension ,不能被代表调用者访问。 一旦我将扩展名更改为internal代表开始正确调用。

这是我的2美分与SWIFT 3中的相同问题作战:

 class HintViewController: UIViewController, UIWebViewDelegate 

以这种方式声明委托方法(注意参数的声明):

 func webViewDidStartLoad(_ webView: UIWebView) func webViewDidFinishLoad(_ webView: UIWebView) 

请记住在Interface Builder中将自己设置为webview的委托属性(selectwebview,从Connections Inspector从委托出口拖到webview或以编程方式从self.webview.delegate = self)

Swift 3有我的详细解决scheme:

1)在类声明中写入UIWebViewDelegate 。 例如:

类MyViewController:UIViewController, UIWebViewDelegate {

2)当然在故事板上连接到你的UIViewController是这样的: @IBOutlet弱var webView:UIWebView!

3)在func viewDidLoad中添加一行: self.webView.delegate = self

而已。 特别想到LinusGeffarth和LLIAJLbHOu的想法。