not good but great

プログラミング、アート、映画・本の感想について書きます。

「第26回 Swiftもくもく会 in BizReach(渋谷)」に参加して、WKWebViewにObserverをセットした

biz-ocean.connpass.com
勉強会に参加してみようと思い、まず参加しやすそうな「もくもく会」に参加してみることにした。渋谷クロスタワーであった。近くに王将があるので、腹ごしらえもできる。

めちゃくちゃ集中できた

デュアルディスプレイじゃないし、わざわざ行く意味なんてないだろーと思っていたけど、めちゃくちゃ集中できた。それは周りの人が集中していたからだと思う。かなり良い雰囲気だった。

WKWebViewで戻る、進むを検知

WKWebViewで戻る、進むボタンの出し分け、enabledの調整をしていた。webviewを見るときに、最初から戻る、進むボタンを表示するのは無駄だから、リンクをタップしたら、初めて表示させたかった。Observerを使えばできた。

wkWebView?.addObserver(self, forKeyPath:"canGoBack", options: .New, context: nil)
wkWebView?.addObserver(self, forKeyPath:"canGoForward", options: .New, context: nil)

監視対象となるプロパティを設定する。

deinit {
        wkWebView?.removeObserver(self, forKeyPath: "canGoForward")
        wkWebView?.removeObserver(self, forKeyPath: "canGoBack")
}

監視対象が外れたときの処理も書いておく。

override func observeValueForKeyPath(keyPath:String, ofObject object:AnyObject, change:[NSObject:AnyObject], context:UnsafeMutablePointer<Void>) {
    switch keyPath {
    case "canGoForward":
        println(wkWebView!.canGoBack as Bool)//true or false
    case "canGoBack":
        println(wkWebView!.canGoBack as Bool)//true or false
    default:
        break
    }
}

プロパティの値に変化があれば、関数が実行される。