html - app - Abra un enlace específico en Safari desde UIWebView
wkwebview ios (1)
Tengo un UIWebView
que carga un archivo index.html local.
Sin embargo, tengo un enlace externo en este archivo html que me gustaría abrir en Safari en lugar de internamente en UIWebView
.
Abrir un enlace en safari de decir un UIButton
fue bastante simple:
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.stackoverflow.com"))
Abrir la aplicación de Instagram desde un enlace externo también funciona como un encanto.
<a href="instagram://media?id=434784289393782000_15903882">instagram://media?id=434784289393782000_15903882</a>
Así que mi primer intento fue hacer algo como esto:
<a href="safari://stackoverflow.com">Open in Safari</a>
Sin embargo, eso no parece funcionar, entonces leo algo sobre el uso de webView:shouldStartLoadWithRequest:navigationType:
Pero todos los que lograron abrir un enlace externo en Safari escriben en Obj-C con el que no estoy demasiado familiarizado mientras escribo en Swift.
Actualización con código Swift:
import UIKit
class AccessoriesViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView:UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
if let url = NSBundle.mainBundle().URLForResource("accessories", withExtension: "html") {
webView.loadRequest(NSURLRequest(URL: url))
}
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent;
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let url = request.URL where navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(url)
return false
}
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
¡Aquí sabrás como podrás hacerlo!
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let url = request.URL where navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(url)
return false
}
return true
}