【问题标题】:How to detect when a UIWebView has completely finished loading in Swift如何检测 UIWebView 何时在 Swift 中完全完成加载
【发布时间】:2016-07-15 07:31:45
【问题描述】:

我需要以编程方式重置 webview 框架,当 webview 完全完成加载时。添加了委托方法,但 webViewDidFinishLoad 为单个请求多次调用。如何在 webViewDidFinishLoad 中检查加载是否完成?

【问题讨论】:

标签: objective-c iphone swift cocoa-touch


【解决方案1】:

您可以使用UIWebViewDelegate

有两种方法可以检测完成,一种是成功,另一种是错误

extension YourViewController: UIWebViewDelegate {

    func webViewDidFinishLoad(webView: UIWebView) {
        if webView.loading {
            // still loading
            return
        }

        print("finished")
        // finish and do something here
    }

    func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
        print("didFailLoadWithError \(error?.localizedDescription)")
        // error happens
    }
}

不要忘记在viewDidLoaddidSet 中将delegate 设置为self(如@Jim 推荐的那样)

myWebView.delegate = self

【讨论】:

  • 我发现如果您使用didSet 设置插座而不是将所有内容都塞入viewDidLoad(),它有助于更​​好地组织代码。
【解决方案2】:
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)
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true

    }


    func webViewDidFinishLoad(webView : UIWebView) {
        UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        println("BB")
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多