Ouvrir un lien spécifique dans Safari depuis UIWebView

J'ai un UIWebView qui charge un file index.html local.

Cependant, j'ai un lien externe dans ce file html que je voudrais ouvrir dans Safari au lieu d'en interne dans l' UIWebView .

Ouvrir un lien dans safari depuis un UIButton était assez simple:

 UIApplication.sharedApplication().openURL(NSURL(ssortingng: "http://www.stackoverflow.com")) 

L'ouverture de l'application Instagram à partir d'un lien externe fonctionne également comme un charme.

 <a href="instagram://media?id=434784289393782000_15903882">instagram://media?id=434784289393782000_15903882</a> 

Donc mon premier était de faire quelque chose comme ça:

 <a href="safari://stackoverflow.com">Open in Safari</a> 

Cependant cela ne semble pas fonctionner, alors j'ai lu quelque chose sur l'utilisation de webView:shouldStartLoadWithRequest:navigationType:

Mais tous ceux qui ont réussi à ouvrir un lien externe dans Safari écrivent en Obj-C, ce que je ne connais pas très bien en écrivant dans Swift.

Mise à jour avec Swift Code:

 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. } } 

Voici comment vous pouvez le faire!

 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 }