Activity 当 webview 完成加载时指示器不会停止
Activity indicator not stopping when webview has finished loading
有人知道为什么我的 activity 指示器在 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")
}
谢谢!
注意函数名称!它是 webView...,驼峰式大小写:)
你得到"The webview is done loading"了吗?如果没有,可能是请求需要很长时间才能完成。
但是,您应该实施 func webView(webView: UIWebView, didFailLoadWithError error: NSError?)
来检测是否有任何错误并停止 activity。
实际上,正确答案可能是 DAN 和 iGongora 的组合,加上可能的第三个原因。
眼前的问题是,即使在快乐路径场景(webview 成功完成)中,它也应该是以下内容(注意函数名 webV[=25 的大小写=]iewDidStartLoad 和 webViewDidFinishLoad
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;
...
}
运行 这在主队列中所以这将停止其他方式不是这个 swift 4 和 swift 3 的代码是
Dispatchqueue.main.async{
activity.stopAnimating()
}
有人知道为什么我的 activity 指示器在 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")
}
谢谢!
注意函数名称!它是 webView...,驼峰式大小写:)
你得到"The webview is done loading"了吗?如果没有,可能是请求需要很长时间才能完成。
但是,您应该实施 func webView(webView: UIWebView, didFailLoadWithError error: NSError?)
来检测是否有任何错误并停止 activity。
实际上,正确答案可能是 DAN 和 iGongora 的组合,加上可能的第三个原因。
眼前的问题是,即使在快乐路径场景(webview 成功完成)中,它也应该是以下内容(注意函数名 webV[=25 的大小写=]iewDidStartLoad 和 webViewDidFinishLoad
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;
...
}
运行 这在主队列中所以这将停止其他方式不是这个 swift 4 和 swift 3 的代码是
Dispatchqueue.main.async{
activity.stopAnimating()
}