Skip to content

Instantly share code, notes, and snippets.

@ochim
Last active February 18, 2020 11:41
Show Gist options
  • Save ochim/0d94dc8d5caa59613b8cd9d8fb89c9b0 to your computer and use it in GitHub Desktop.
Save ochim/0d94dc8d5caa59613b8cd9d8fb89c9b0 to your computer and use it in GitHub Desktop.
SFSafariViewController

忘れられがちなSFSafariViewControllerについて

// サンプルコード
import SafariServices

func displayWebPage(url: String) {
    if let url = URL(string: url) {
        let vc = SFSafariViewController(url: url)
        vc.modalPresentationStyle = .fullScreen
        present(vc, animated: true, completion: nil)
    }
}
  • SFSafariViewControllerDelegate
//(1)
optional public func safariViewController(_ controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool)
//(2)
optional public func safariViewController(_ controller: SFSafariViewController, excludedActivityTypesFor URL: URL, title: String?) -> [UIActivityType]
//(3)
optional public func safariViewControllerDidFinish(_ controller: SFSafariViewController)

(1)は、最初に表示する画面の読み込み完了時に呼ばれます。

(2)は、アクションボタンタップ時に呼ばれます。 カスタムUIActivityを返却することもできます。 アクションボタンとは下の画像の右から二番目の四角から上矢印が出ているボタンです。

(3)は、左上の完了ボタンタップ時に呼ばれます。

SFSafariViewControllerですが実装も簡単ですし、特にWebViewにカスタム要素がないとか、Safariアプリに投げるとかするなら、こちらの方が使い勝手がいいと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment