Bestimmten Link in Safari über UIWebView öffnen
Ich habe einUIWebView
Lädt eine lokale index.html-Datei.
Jedoch habe ich einen externen Link in dieser HTML-Datei, den ich in Safari anstatt intern im @ öffnen möchtUIWebView
.
Öffnen eines Links in Safari von say aUIButton
war einfach genug:
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.stackoverflow.com"))
Das Öffnen der Instagram-App über einen externen Link funktioniert ebenfalls wie ein Zauber.
<a href="instagram://media?id=434784289393782000_15903882">instagram://media?id=434784289393782000_15903882</a>
Also mein erster Versuch war, so etwas zu machen:
<a href="safari://stackoverflow.com">Open in Safari</a>
Aber das scheint nicht zu funktionieren, dann habe ich etwas über die Verwendung von @ gelesewebView:shouldStartLoadWithRequest:navigationType:
Aber jeder, dem es gelungen ist, einen externen Link in Safari zu öffnen, schreibt in Obj-C, mit dem ich nicht so vertraut bin wie mit Swift.
Update mit 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.
}
}