WebView にスワイプで戻る、進む機能をつける

  • 53
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。
ViewController.swift
@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    ...
    self.setupSwipeGestures()
}

func setupSwipeGestures() {
    // 右方向へのスワイプ
    let gestureToRight = UISwipeGestureRecognizer(target: self.webView, action: "goBack")
    gestureToRight.direction = UISwipeGestureRecognizerDirection.Right
    self.webView.addGestureRecognizer(gestureToRight)

    // 左方向へのスワイプ
    let gestureToLeft = UISwipeGestureRecognizer(target: self.webView, action: "goForward")
    gestureToLeft.direction = UISwipeGestureRecognizerDirection.Left
    self.webView.addGestureRecognizer(gestureToLeft)
}

goBack(), goForward() 以外の処理を追加したいときや、canGoBack(), canGoForward() が false のときに何か処理を加えたいとき、target を self にして呼び出すメソッドを用意する

ViewController.swift
@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    ...
    self.setupSwipeGestures()
}

func setupSwipeGestures() {
    // 右方向へのスワイプ
    let gestureToRight = UISwipeGestureRecognizer(target: self, action: "goBack")
    gestureToRight.direction = UISwipeGestureRecognizerDirection.Right
    self.webView.addGestureRecognizer(gestureToRight)

    // 左方向へのスワイプ
    let gestureToLeft = UISwipeGestureRecognizer(target: self, action: "goForward")
    gestureToLeft.direction = UISwipeGestureRecognizerDirection.Left
    self.webView.addGestureRecognizer(gestureToLeft)
}

func goBack() {
    if (self.webView.canGoBack) {
        self.webView.goBack()
    } else {
        // canGoBack == false の処理
    }
}

func goForward() {
    if (self.webView.canGoForward) {
        self.webView.goForward()
    } else {
        // canGoForward == false の処理
    }
}