|
|||||
|
対象: 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]
|
|||||