UIWebViewDelegate DidFinishLoad 未在自定义类中触发 (Swift)

Posted

技术标签:

【中文标题】UIWebViewDelegate DidFinishLoad 未在自定义类中触发 (Swift)【英文标题】:UIWebViewDelegate DidFinishLoad Not Firing In Custom Class (Swift) 【发布时间】:2014-07-11 17:08:10 【问题描述】:

我正在连接到一个网站,登录并使用 NSURLRequest 获取页面的 html 源,这一切正常。我通过将 html 源打印到控制台来确认它是我需要的。问题是我需要在 javascript 代码完成后获取呈现的 HTML。根据我的研究,做到这一点的唯一方法是将其加载到我正在尝试做的 UIWebView 中。但是,当我这样做时,webViewDidFinishLoad 委托永远不会触发。 webViewDidStartLoad 也没有。我不想在任何地方显示 UIWebView,因为它的唯一目的是为我获取呈现的 HTML。到目前为止,这是我的代码:

import UIKit

class ShowParser : NSObject, UIWebViewDelegate

    var webView = UIWebView()

    init()
    
        super.init()
        webView.delegate = self
        sendRequest()
    

    funs sendRequest()
    
        var requestUrl = NSURL(string: "<website>")
        var baseUrl = NSURL(string: "<website>")
        var nsurlRequest = NSMutableURLRequest(URL: requestUrl)
        nsurlRequest.HTTPMethod = "POST"
        nsurlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        var submitData = "submit=login&lastplace=&email=<username>&password=<password>"
        var requestBodyData = submitData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
        nsurlRequest.HTTPBody = requestBodyData
        var data = NSURLConnection.sendSynchronousRequest(nsurlRequest, returningResponse: nil, error: nil)
        var dataResultsString = NSString(data: data, encoding: NSUTF8StringEncoding)
        //println(dataResultsString)
        webView.loadHTMLString(dataResultsString, baseURL: baseUrl)
    

    func webViewDidStartLoad(webView: UIWebView!)
    
        println("Started Loading")
    

    func webViewDidFinishLoad(webView: UIWebView)
    
        println("Finished Loading")
    

【问题讨论】:

【参考方案1】:

已经回答了here,但是如果有人遇到这个问题,那么只需添加以下内容:

    theWebPage.delegate = self

我可以看到你确实添加了它,所以我认为它已经被编辑过。

【讨论】:

以上是关于UIWebViewDelegate DidFinishLoad 未在自定义类中触发 (Swift)的主要内容,如果未能解决你的问题,请参考以下文章

UIWebViewDelegate DidFinishLoad 未在自定义类中触发 (Swift)

iPad 上的拆分视图 (Swift 3)

为啥此应用程序委托代码有效

WKWebKit基础

开发细节

源码0604-12-掌握-webView