У меня есть UIWebView
, который загружает локальный файл index.html.Открыть специальную ссылку в Safari от UIWebView
Однако у меня есть внешняя ссылка в этом html-файле, который я хотел бы открыть в Safari вместо внутреннего в UIWebView
.
Открытие ссылки в сафари от, скажем, UIButton
был достаточно прост:
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.stackoverflow.com"))
Открытие приложения Instagram из внешней ссылки также работает как шарм.
<a href="instagram://media?id=434784289393782000_15903882">instagram://media?id=434784289393782000_15903882</a>
Так мой первый, хотя должен был сделать что-то вроде этого:
<a href="safari://stackoverflow.com">Open in Safari</a>
Однако это не похоже на работу, то я читал что-то об использовании webView:shouldStartLoadWithRequest:navigationType:
Но каждый, кто сумел открыть внешнюю ссылку в Safari, пишет в Obj-C, с которой я не слишком хорошо знаком, когда пишу в Swift.
Обновление с 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.
}
}
Хм что-то еще кажется неправильным. Я добавил свой быстрый код, включая вашу функцию. Вы бы так любезны взглянуть на то, что не так? Поистине ценим! – Kevin
Вы дали делегат 'UIWebView'? –
Ах, конечно! Спасибо, сэр! – Kevin