Abrir enlace específico en Safari desde UIWebView
tengo unUIWebView
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 elUIWebView
.
Abrir un enlace en safari desde decir unUIButton
fue lo suficientemente simple:
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.stackoverflow.com"))
Abrir la aplicación de Instagram desde un enlace externo también funciona de maravilla.
<a href="instagram://media?id=434784289393782000_15903882">instagram://media?id=434784289393782000_15903882</a>
Así que mi primer pensamiento fue hacer algo como esto:
<a href="safari://stackoverflow.com">Open in Safari</a>
Sin embargo, eso no parece funcionar, entonces leí algo sobre el usowebView:shouldStartLoadWithRequest:navigationType:
Pero todos los que lograron abrir un enlace externo en Safari están escribiendo en Obj-C, que no estoy muy familiarizado ya que estoy escribiendo 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.
}
}