Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

8,8FC7JFX

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ෆຬ

Slide 6

Slide 6 text

target="_blank"໰୊ • func webView(_:createWebViewWithConfiguration:
 forNavigationAction:windowFeatures:) -> WKWebView! • ৽͘͠։͘WKWebViewΛ࡞ͬͯฦ͢ • nilΛฦͯ͠΋ͦͷWebViewͰ͸ϩʔυ͠ͳ͍

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

8FC,JU1MVT IUUQTHJUIVCDPNZBTIJHBOJ8FC,JU1MVT

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

8,6*%FMFHBUF1MVT

Slide 15

Slide 15 text

• target=“_blank”ͷϫʔΫΞϥ΢ϯυΛ࣮૷ • ΋ͪΖΜ৔߹ʹΑͬͯผͷWKWebViewʹ
 ࠩ͠ସ͑Δ͜ͱ΋Մೳ • alert/confirm/promptͷॲཧΛ࣮૷

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

8FC7JFX0CTFSWFS

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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 } }

Slide 20

Slide 20 text

;FO8FC7JFX$POUSPMMFS

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

͋Γ͕ͱ͏͍͟͝·ͨ͠