対象:
Swift3

iOS 8以降で使えるWKWebViewでWebページを表示する(Swift)

SwiftでWebページを表示する場合、ターゲットがiOS 8以降ならUIWebViewの代わりにWKWebViewが使える。WKWebViewを使うためには、WebKitをimportする必要がある。横スワイプで前のページに戻れるようにするには、allowsBackForwardNavigationGesturesをtrueにする。

import UIKit
import WebKit

class ViewController: UIViewController {
    let webView = WKWebView()

    override func loadView() {
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        webView.allowsBackForwardNavigationGestures = true
        let url = URL(string: "http://www.office-matsunaga.biz/ios/list.php")!
        let request = URLRequest(url: url)
        webView.load(request)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

また、WKWebViewでhttp通信の状況等を確認したいなら、まずViewControllerでWKNavigationDelegateを継承する。

class ViewController: UIViewController, WKNavigationDelegate {

次に、viewDidLoadメソッド内で自分自身をWKWebViewオブジェクトのnavigationDelegateプロパティにセットし、目的のデリゲートメソッドを書けば良い。例えば、ナビゲーションが完了したときに通知を受けたいならwebView(_:didFinish)デリゲートメソッドを書けば良い。

    override func viewDidLoad() {
        // 省略
        webView.navigationDelegate = self
        // 省略
    }

    // didFinishNavigationデリゲートメソッド
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("didFinishNavigation")
    }

これを実行したのが以下だ。


iOS 9より、ATS(App Transport Security)が導入さていたり、あるいは3D Touchによるプレビューができるようになっていたりするので、興味のある方はこちらもご参照いただきたい。

Web Viewでhttpのサイトが表示されない(Swift)
Web Viewで3D Touchによるプレビュー(Peek)を実装する(Swift)
(2015/10/08)
(2016/10/29 更新) Swift 3.0対応。

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2016 モバイル開発系(K) All rights reserved.
[Home]