対象: iOS 9以降で使えるSFSafariViewControllerでWebページを表示する(Swift)iOS 9から新たにSFSafariViewControllerが導入された。SFSafariViewControllerを使うためには、SafariServicesをimportする必要がある。 以下のshowSafariメソッドはボタンのTouch Downイベントに接続したメソッドである。ボタンを押下するとSFSafariViewControllerが開く。iPhone 6s等対応機種であれば、SFSafariViewControllerは何もしなくても3D TouchによるPeek & Popが使える。また、SFSafariViewControllerは"完了"をタップすれば元のアプリに戻ることができる。 import UIKit import SafariServices class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func showSafari(_ sender: AnyObject) { let url = NSURL(string: "http://www.office-matsunaga.biz/ios/list.php")! // entersReaderIfAvailableをtrueにすると、可能なら自動的にリーダー表示する let webView = SFSafariViewController(url: url/*, entersReaderIfAvailable: true*/) present(webView, animated: true, completion: nil) } } また、SFSafariViewControllerでhttp通信の状況等を確認したいなら、まずViewControllerでSFSafariViewControllerDelegateを継承する。 class ViewController: UIViewController, SFSafariViewControllerDelegate { 次に、ボタンのTouch Downイベントメソッド内で自分自身をSFSafariViewControllerオブジェクトのdelegateプロパティにセットし、目的のデリゲートメソッドを書けば良い。 @IBAction func showSafari(_ sender: AnyObject) { // 省略 webView.delegate = self // 省略 } // safariViewControllerDidFinishデリゲートメソッド func safariViewControllerDidFinish(_ controller: SFSafariViewController) { print("DidFinish") } これを実行したのが以下だ。 (2015/10/24) () Swift 3.0対応。
Copyright© 2004-2019 モバイル開発系(K) All rights reserved.
[Home]
|