8 ответов:
это не "запеченный в Swift", но вы можете использовать стандартный
UIKitметоды для этого. Взгляните наUIApplication' sopenUrl().Swift 4
guard let url = URL(string: "https://stackoverflow.com") else { return } UIApplication.shared.open(url)Swift 3
guard let url = URL(string: "https://stackoverflow.com") else { return } UIApplication.shared.openURL(url)Swift 2.2
guard let url = URL(string: "https://stackoverflow.com") else { return } UIApplication.sharedApplication().openURL(url)
новый с iOS 9 и выше вы можете представить пользователю с
SFSafariViewController(см. документацию здесь). В основном вы получаете все преимущества отправки пользователя в Safari, не заставляя их покидать ваше приложение. Чтобы использовать новый SFSafariViewController просто:import SafariServicesи где-то в обработчике событий присутствует пользователь с контроллером представления safari следующим образом:
let svc = SFSafariViewController(url: url) present(svc, animated: true, completion: nil)вид safari будет выглядеть примерно так это:
обновлено для Swift 4: (кредит Марко Веберу)
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.shared.openURL(requestUrl as URL) }или пойти с более быстрым стилем, используя
guard:guard let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") else { return } UIApplication.shared.openURL(requestUrl as URL)Swift 3:
вы можете проверить NSURL как необязательный неявно:
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.sharedApplication().openURL(requestUrl) }
Swift 3 & IOS 10.2
UIApplication.shared.open(URL(string: "http://www.stackoverflow.com")!, options: [:], completionHandler: nil)Swift 3 & IOS 10.2
начиная с iOS 10 вы должны использовать:
guard let url = URL(string: linkUrlString) else { return } if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) }
В Swift 1.2:
@IBAction func openLink { let pth = "http://www.google.com" if let url = NSURL(string: pth){ UIApplication.sharedApplication().openURL(url) }
IOS 11.2 Swift 3.1-4
let webView = WKWebView() override func viewDidLoad() { super.viewDidLoad() guard let url = URL(string: "https://www.google.com") else { return } webView.frame = view.bounds webView.navigationDelegate = self webView.load(URLRequest(url: url)) webView.autoresizingMask = [.flexibleWidth,.flexibleHeight] view.addSubview(webView) } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.navigationType == .linkActivated { if let url = navigationAction.request.url, let host = url.host, !host.hasPrefix("www.google.com"), UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url) print(url) print("Redirected to browser. No need to open it locally") decisionHandler(.cancel) } else { print("Open it locally") decisionHandler(.allow) } } else { print("not a user click") decisionHandler(.allow) } }}

Comments