【发布时间】:2014-07-02 02:04:00
【问题描述】:
我在我的应用程序中使用 UIWebView 来加载网站的内容。然后我使用javascript登录网站,然后在我登录后解析页面的内容以获取我需要的数据。我每 5 分钟执行一次,这在前台运行良好。但是,当我后台应用程序时,我调用了包含 UIWebView 的 UIViewController 并点击了将 URL 加载到 UIWebView 中的方法,但之后没有任何反应。
我很确定 UIViewController 必须处于活动状态才能更新 UIWebView,但是有没有办法解决这个问题?在后台检查这些数据确实是应用程序的重点。
编辑
jakepeterson - 根据您的代码,我尝试从 Swift 开始子类化 UIWebView。这是据我所知:
class CustomWebView: UIWebView, UIWebViewDelegate
{
var webView: UIWebView
var requestURL: NSURL
var urlRequest: NSURLRequest
init()
{
webView = UIWebView()
requestURL = NSURL(string: "http://www.google.com")
urlRequest = NSURLRequest(URL: requestURL)
super.init(frame: CGRectMake(0, 0, 100, 100))
webView.delegate = self
webView.addSubview(webView.window)
webView.loadRequest(request)
}
func webViewDidFinishLoad(sender: UIWebViewDelegate)
{
//Do stuff
}
}
我仍然没有点击 webViewDidFinishLoad 委托方法。我认为这可能与这条线有关:
webView.addSubview(webView.window)
在您的代码中,您有 self.view 但这并没有显示为可用选项。
更新
这是我现在正在做的事情,并且代表现在被触发了:
import UIKit
class CustomWebView: UIWebView
{
var uiView = UIView()
init(frame: CGRect)
{
super.init(frame: frame)
self.delegate = self
}
convenience init(frame:CGRect, request:NSURLRequest)
{
self.init(frame: frame)
uiView.addSubview(self)
loadRequest(request)
}
}
extension CustomWebView: UIWebViewDelegate
{
func webViewDidStartLoad(webView: UIWebView!)
{
println("webViewDidStartLoad")
}
func webViewDidFinishLoad(webView: UIWebView)
{
println("webViewDidFinishLoad")
}
func webView(webView: UIWebView!, didFailLoadWithError error: NSError!)
{
println("An error occurred while loading the webview")
}
}
【问题讨论】: