Ответ 1
Это делается по-разному в Swift, как в Obj-C:
Сначала объявите, что ваш контроллер просмотра соответствует UIWebViewDelegate
class MyViewController: UIWebViewDelegate
Затем реализуем webViewShouldStartLoadingWithRequest:navigationType:
в вашем контроллере просмотра:
// Swift 1 & 2
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
UIApplication.sharedApplication().openURL(request.URL)
return false
default:
// Handle other navigation types...
return true
}
}
// Swift 3
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .linkClicked:
// Open links in Safari
guard let url = request.url else { return true }
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// openURL(_:) is deprecated in iOS 10+.
UIApplication.shared.openURL(url)
}
return false
default:
// Handle other navigation types...
return true
}
}
Наконец, установите делегат UIWebView
, например, в viewDidLoad
или в вашей раскадровке:
webView.delegate = self