在 Web 视图中加载 HTML 时永不结束循环
Posted
技术标签:
【中文标题】在 Web 视图中加载 HTML 时永不结束循环【英文标题】:Never ending loop while loading HTML in Web View 【发布时间】:2017-05-29 03:23:31 【问题描述】:我尝试使用现有网站加载 webView。
我在导航栏上添加了带有 url 链接的按钮:
override func viewDidLoad()
super.viewDidLoad()
webView.delegate = self
var myhtmlString = ""
guard let myURL = URL(string: domainURLString) else
print("Error: \(domainURLString) doesn't seem to be a valid URL")
return
do
myHTMLString = try String(contentsOf: myURL, encoding: .utf8)
catch let error
print("Error: \(error)")
webView.frame = view.bounds
webView.scalesPageToFit = true
createBottomNavigationBar()
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
print("===============================start===============================")
let myURLString:String = (request.url?.absoluteString)!
var myHTMLString = ""
if navigationType == UIWebViewNavigationType.linkClicked
print("link clicked")
webView.stopLoading()
var myHTMLString = ""
let myURL = URL(string: myURLString)
do
myHTMLString = try String(contentsOf: myURL!, encoding: .utf8)
catch let error
print("Error: \(error)")
return true
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
print("first")
print(request.url)
else if(navigationType == UIWebViewNavigationType.other)
print("This is for Navigation Button click")
//webView.loadHTMLString(myHTMLString as String, baseURL: nil)
else
print("else")
return true
但是,当我取消注释时
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
在此声明中:
else if(navigationType == UIWebViewNavigationType.other)
应用程序永远循环。
该语句适用于当其中一个导航按钮单击时触发。它重定向到内部 url,如“http://yahoo.com/mail”。
【问题讨论】:
【参考方案1】:这将是基于您的代码的预期行为。线
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
viewDidLoad
将尝试加载 HTML。这又会调用委托方法
webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
在委托方法中,当你的代码遇到else if
的情况时,它会再次调用
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
这又会再次调用委托方法。这是一个循环循环。代码正常工作。你需要改变逻辑。
【讨论】:
以上是关于在 Web 视图中加载 HTML 时永不结束循环的主要内容,如果未能解决你的问题,请参考以下文章
Web 视图无法加载特定 URL(Web 工具包错误域 102)
我可以使用 Xcode 将文件写入 HTML 文件,然后将其加载到 Web 视图中吗?