任何人都知道为什么我的活动指示器在webview加载完毕后没有停止? Web视图被委派,UIActivityIndicatorView
开始动画等,在我的代码中......?
这是相关代码:
import UIKit
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webview: UIWebView!
@IBOutlet weak var activity: UIActivityIndicatorView!
var url = "http://apple.com"
func loadURL () {
let requestURL = NSURL(string: url)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}
override func viewDidLoad() {
super.viewDidLoad()
loadURL()
// Do any additional setup after loading the view, typically from a nib.
webview.delegate = self;
}
func webviewDidStartLoad(_ : UIWebView){
activity.startAnimating()
NSLog("The webview is starting to load")
}
func webviewDidFinishLoad(_ : UIWebView){
activity.stopAnimating()
activity.hidden=true;
NSLog("The webview is done loading")
}
谢谢!
答案 0 :(得分:3)
记住功能名称!它的webView ...,骆驼案例:)
答案 1 :(得分:0)
你得到了#34; webview已经完成加载"?如果没有,可能要求它花很长时间才能完成它。
但是,您应该实施this.getAttribute('src')
来检测是否存在任何错误并停止活动。
答案 2 :(得分:0)
实际上,正确的答案可能是DAN和iGongora的组合,加上可能的第三个原因。
直接的问题是,即使在一个快乐的路径场景(webview成功完成)的情况下,它应该是以下内容(注意函数名称web V iewDidStartLoad和web的情况的 V 强> iewDidFinishLoad
func webViewDidStartLoad(webView: UIWebView) {
activity.startAnimating()
NSLog("The webview is starting to load")
}
func webViewDidFinishLoad(webView: UIWebView) {
activity.stopAnimating()
activity.hidden=true;
NSLog("The webview is done loading")
}
此外,如果UIWebView
失败,您还应该停止微调器。
func webView(webView: UIWebView!, didFailLoadWithError error: NSError!) {
activity.stopAnimating()
activity.hidden=true;
print("Webview fail with error \(error)");
}
另一个可能的问题是,如果您没有正确设置委托。您可以在viewDidLoad
或Interface Builder中执行此操作。
override func viewDidLoad() {
super.viewDidLoad()
...
self.webView.delegate = self;
...
}
答案 3 :(得分:0)
在主队列中运行此操作,这样就会停止其他方式而不是此swift 4和swift 3的代码
Dispatchqueue.main.async{
activity.stopAnimating()
}