Невозможно открыть внешнюю ссылку в сафари с помощью WKWebView
Я перехожу из UIWebView
к WKWebView
. Необходимо загрузить содержимое HTML вWKWebView
все работает нормально, но проблема не может открыть ссылку во внешнем браузере Safari после щелчка по любой ссылке из WKWebView
. Я использовал код ниже
Класс
class CTFSPolicyAndTermsViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {}
розетка и WKWebView
переменная
@IBOutlet weak var webViewContainer: UIView!
var webView: WKWebView!
viewDidLoad
метод
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView()
self.webView.uiDelegate = self
self.webView.navigationDelegate = self
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.translatesAutoresizingMaskIntoConstraints = false
webViewContainer.addSubview(webView)
[webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor),
webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor),
webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor),
webView.rightAnchor.constraint(equalTo: webViewContainer.rightAnchor)].forEach {
anchor in
anchor.isActive = true
}
для загрузки содержимого HTML
if(self.isTermsMode)
{
let path:String = Bundle.main.path(forResource: "abc", ofType: "html")!
let text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)
webView!.loadHTMLString(text!, baseURL: nil)
}
решить PolicyFor
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url {
print(url)
UIApplication.shared.open(url)
decisionHandler(.cancel)
} else {
decisionHandler(.allow)
}
}
decidePolicyFor
метод должен вызвать, но он не выполняется, я не могу найти проблему
1 ответ
Решение
Я пропустил заказ
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.translatesAutoresizingMaskIntoConstraints = false
webViewContainer.addSubview(webView)
[webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor),
webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor),
webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor),
webView.rightAnchor.constraint(equalTo:
webViewContainer.rightAnchor)].forEach { anchor in
anchor.isActive = true
}
self.webView.uiDelegate = self
self.webView.navigationDelegate = self