Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to WebKitPlus

Introduction to WebKitPlus

Introduction to WebKitPlus at potatotips #16.
Check it!!! -> https://github.com/yashigani/WebKitPlus

yashigani

April 15, 2015
Tweet

More Decks by yashigani

Other Decks in Programming

Transcript

  1. 8,8FC7JFXΛ
    γϡοͱ࢖͏
    @yashigani
    potatotips #16

    View Slide

  2. yashigani
    id:yashigani_w @yashigani
    Mobile Application Engineer
    http://yashigani.hatenablog.com
    Hatena

    View Slide

  3. 8,8FC7JFX

    View Slide

  4. 6*8FC7JFXJTEFBE
    -POHMJWF8,8FC7JFX
    ʕ.BUUU5IPNQTPO /4)JQTUFS

    View Slide

  5. ෆຬ

    View Slide

  6. target="_blank"໰୊
    • func webView(_:createWebViewWithConfiguration:

    forNavigationAction:windowFeatures:) ->
    WKWebView!
    • ৽͘͠։͘WKWebViewΛ࡞ͬͯฦ͢
    • nilΛฦͯ͠΋ͦͷWebViewͰ͸ϩʔυ͠ͳ͍

    View Slide

  7. func webView(webView: WKWebView,
    createWebViewWithConfiguration:
    WKWebViewConfiguration,
    forNavigationAction:
    WKNavigationAction,
    windowFeatures: WKWindowFeatures)
    -> WKWebView? {
    let request =
    forNavigationAction.request
    webView.loadRequest(request)
    return nil
    }

    View Slide

  8. alertͷදࣔ
    • alert, confirm, prompt
    • js͔Βͷཁٻʹ߹ΘͤͯΞϥʔτΛදࣔ͢Δ
    • ok, ok/cancel, textfield
    • ΄ͱΜͲఆܗ

    View Slide

  9. R.I.P. KVO
    • KVOͰ͖ΔϓϩύςΟ͕૿͑ͨ͜ͱࣗମ͸͏Ε͍͠
    • swift࣌୅ʹ͓͍ͯ͸ॻ͖ͨ͘ͳ͍
    • closureͰobserveͤͯ͞ཉ͍͠

    View Slide

  10. storyboardʹஔ͚ͳ͍
    • IBͷObject libraryʹWKWebView͸ແ͍
    • storyboardͱίʔυΛ૊Έ߹ΘͤͨΓɼίʔυͷΈ
    Ͱ࣮૷͢Δඞཁ
    • WebViewग़͍͚ͨͩ͠ɼΈ͍ͨͳը໘ʹ͸

    ͞΄ͲίετΛ͔͚ͨ͘ͳ͍

    View Slide

  11. https://flic.kr/p/5beGnc
    શવγϡοͱͯ͠ͳ͍

    View Slide

  12. 8FC,JU1MVT
    IUUQTHJUIVCDPNZBTIJHBOJ8FC,JU1MVT

    View Slide

  13. • WKWebViewͷ͔Ώ͍ͱ͜ΖΛཱͪͲ͜Ζʹղܾ
    • Carthage/CocoaPodsͰಋೖͰ͖Δ

    View Slide

  14. 8,6*%FMFHBUF1MVT

    View Slide

  15. • target=“_blank”ͷϫʔΫΞϥ΢ϯυΛ࣮૷
    • ΋ͪΖΜ৔߹ʹΑͬͯผͷWKWebViewʹ

    ࠩ͠ସ͑Δ͜ͱ΋Մೳ
    • alert/confirm/promptͷॲཧΛ࣮૷

    View Slide

  16. lazy var UIDelegate =
    WKUIDelegatePlus(self)
    override public func viewDidLoad()
    {
    super.viewDidLoad()
    webView.UIDelegate = UIDelegate
    }

    View Slide

  17. 8FC7JFX0CTFSWFS

    View Slide

  18. • WKWebViewͷKVO compliantͳpropertyΛɼ
    closureͰobserveͰ͖ΔΑ͏ʹαϙʔτ

    View Slide

  19. lazy var observer =
    WebViewObserver(self.webView)
    override public func viewDidLoad()
    {
    super.viewDidLoad()
    observer.onTitleChanged =
    { [weak self] in
    self?.title = $0 }
    observer.onProgressChanged =
    { [weak self] in
    self?.progressbar.progress = $0
    }
    }

    View Slide

  20. ;FO8FC7JFX$POUSPMMFS

    View Slide

  21. • WKWebViewΛ࣋ͬͨView Controller
    • Zen = “ષ”
    • WKWebViewૢ࡞ͷͨΊͷIBAction
    • goBack/goForward/reload/stopLoading
    • WKUIDelegatePlus, WebViewObserverΛ࣮૷
    • storyboard͔Β࢖͑Δͧʂʂʂ

    View Slide

  22. 8FC,JU1MVTͰ
    8,8FC7JFXΛγϡοͱ
    ࢖͓͏

    View Slide

  23. ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide