openURL
est déconseillé dans Swift3. Quelqu'un peut-il donner quelques exemples de la manière dont le remplacement openURL:options:completionHandler:
fonctionne lorsque vous essayez d'ouvrir une URL?
Réponses
Trop de publicités?
Nirav D
Points
53910
La réponse ci-dessus est correcte, mais si vous voulez vérifier que vous canOpenUrl
ou essayez pas de ce genre.
let url = URL(string: "http://www.facebook.com")!
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
//If you want handle the completion block than
UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
print("Open url : \(success)")
})
}
Remarque: Si vous ne souhaitez pas gérer la fin, vous pouvez également écrire comme cela.
UIApplication.shared.open(url, options: [:])
Pas besoin d'écrire completionHandler
il contient la valeur par défaut nil
, consultez la documentation d'apple pour plus de détails.
Chetan Rajagiri
Points
420
Demosthese
Points
587
Swift 3 version
import UIKit
protocol PhoneCalling {
func call(phoneNumber: String)
}
extension PhoneCalling {
func call(phoneNumber: String) {
let cleanNumber = phoneNumber.replacingOccurrences(of: " ", with: "").replacingOccurrences(of: "-", with: "")
guard let number = URL(string: "telprompt://" + cleanNumber) else { return }
UIApplication.shared.open(number, options: [:], completionHandler: nil)
}
}
Scott Maretick
Points
17
J'utilise macOS Sierra (v10.12.1) Xcode v8.1 Swift 3.0.1 et voici ce qui a fonctionné pour moi dans ViewController.swift:
//
// ViewController.swift
// UIWebViewExample
//
// Created by Scott Maretick on 1/2/17.
// Copyright © 2017 Scott Maretick. All rights reserved.
//
import UIKit
import WebKit
class ViewController: UIViewController {
//added this code
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Your webView code goes here
let url = URL(string: "https://www.google.com")
if UIApplication.shared.canOpenURL(url!) {
UIApplication.shared.open(url!, options: [:], completionHandler: nil)
//If you want handle the completion block than
UIApplication.shared.open(url!, options: [:], completionHandler: { (success) in
print("Open url : \(success)")
})
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
};