Как выполнить код после нажатия кнопки «Готово» в Safari?

Я запускаю Safari в приложении и хочу выполнить свой код после нажатия «Готово». Но функция func safariViewControllerDidFinish не войдет.

      import SafariServices

class QRScannerController: UIViewController, WKNavigationDelegate, SFSafariViewControllerDelegate {

let vc = SFSafariViewController (url: URL(string: String(urls))!)
            present(vc, animated: true, completion: nil)
            vc.delegate = self
            
            func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
                controller.dismiss(animated: true) {
                 // do my code
                }

1 ответ

Решение

Не нужно отказываться от контроллера внутри , он уже закрывается, когда нажата кнопка "Готово".

      import SafariServices

class QRScannerController: UIViewController, SFSafariViewControllerDelegate {
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let vc = SFSafariViewController (url: URL(string: "https://www.google.com")!)
        self.present(vc, animated: true, completion: nil)
        vc.delegate = self
    }

    func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
        // do your code
        print("done!")
    }
}
Другие вопросы по тегам