如何解决Swift:警告说当用户访问不允许的 URL 时它被阻止
给定代码:
func webView(_ webView: WKWebView,decidePolicyFor navigationAction: WKNavigationAction,decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let url = navigationAction.request.url
if let host = url?.host {
for website in websites {
if host.contains(website) {
decisionHandler(.allow)
return
}
}
}
decisionHandler(.cancel)
}
我写了下面的代码块,但不管我把它放在哪里都不能正常工作。
let ac = UIAlertController(title: "Page blocked!",message: nil,preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK",style: .cancel))
present(ac,animated: true)
解决方法
试试
func webView(_ webView: WKWebView,decidePolicyFor navigationAction: WKNavigationAction,decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let url = navigationAction.request.url
if let host = url?.host {
for website in websites {
if host.contains(website) {
decisionHandler(.allow)
return
}
}
}
let ac = UIAlertController(title: "Page blocked!",message: nil,preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK",style: .cancel))
present(ac,animated: true)
decisionHandler(.cancel)
}
,
在 decisionHandler(.cancel)
之前调用此函数可以正常工作:
func configureAlert() {
let ac = UIAlertController(title: "Page blocked!",preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK",style: .default))
if webView.isLoading == false {
present(ac,animated: true)
return
}
}
,
也许我误解了这个问题。试试这个,让我知道你的想法。 注意:我的网站数组包含在下面作为注释
func webView(_ webView: WKWebView,decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let url = navigationAction.request.url
if let host = url?.host{
//websites in websites array = ["apple.com","bbc.com","youtube.com","tiktok.com","yahoo.com","ufc.com"]
for website in websites{
if (host.contains(website) && website != "tiktok.com") && (host.contains(website) && website != "youtube.com") {
decisionHandler(.allow)
return
}else if (host.contains(website) && website == "tiktok.com") || (host.contains(website) && website == "youtube.com") {
let alert = UIAlertController(title: "Blocked website",message: "You are not allowed to access website",preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Dismiss...",style: .cancel))
present(alert,animated: true)
decisionHandler(.cancel)
return
}
}
}
decisionHandler(.cancel)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。