回答編集履歴

2

実際に試したコードを追加

2018/07/04 00:58

投稿

u39ueda
u39ueda

スコア950

test CHANGED
@@ -16,10 +16,64 @@
16
16
 
17
17
  とりあえず後者の方法を。
18
18
 
19
- loadView()のuserContentControllerをセットしているあたりに以下のコードを追加するだけです。
19
+ ~~loadView()のuserContentControllerをセットしているあたりに以下のコードを追加するだけです。~~
20
+
21
+ →実際に試したら動きませんでした。追記2参照
20
22
 
21
23
  ```
22
24
 
23
25
  WebView.configuration.userContentController = userController
24
26
 
25
27
  ```
28
+
29
+
30
+
31
+ ### 追記2
32
+
33
+
34
+
35
+ 実際に試してみました。
36
+
37
+ すみません。どうやらuserContentControllerへの代入だと動作しないようです。
38
+
39
+ WebviewにセットしてあるuserContentControllerに直接addすると動作しました。
40
+
41
+ あとcallbackHandlerのスペルもミスってたのでそこも直しました。
42
+
43
+
44
+
45
+ ```
46
+
47
+ override func loadView() {
48
+
49
+ super.loadView()
50
+
51
+ //let webCfg: WKWebViewConfiguration = WKWebViewConfiguration()
52
+
53
+ //let userController: WKUserContentController = WKUserContentController()
54
+
55
+ //userController.add(self, name: "callbaclHandler")
56
+
57
+ //webCfg.userContentController = userController;
58
+
59
+ Webview.configuration.userContentController.add(self, name: "callbackHandler")
60
+
61
+ Webview.uiDelegate = self
62
+
63
+ Webview.navigationDelegate = self
64
+
65
+ self.view.addSubview(Webview)
66
+
67
+ }
68
+
69
+ ```
70
+
71
+
72
+
73
+ それとこれは回答とは関係ないのですが。
74
+
75
+ storyboardで画面を作った場合はloadViewをoverrideしないようにと[リファレンス](https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview)に書いてあります。
76
+
77
+ loadViewはコードでself.viewを生成する時ぐらいしか使わないと思います。
78
+
79
+ ビューの初期化はviewDidLoad()で行いましょう。

1

具体的なコードを追加

2018/07/04 00:58

投稿

u39ueda
u39ueda

スコア950

test CHANGED
@@ -7,3 +7,19 @@
7
7
  WebViewの生成をstoryboardではなくコードで行うか、webCfgの使用をやめてWebViewのconfigurationにセットするかすればいいでしょう。
8
8
 
9
9
  簡単なのは後者でしょうけど。
10
+
11
+
12
+
13
+ ### 追記
14
+
15
+
16
+
17
+ とりあえず後者の方法を。
18
+
19
+ loadView()のuserContentControllerをセットしているあたりに以下のコードを追加するだけです。
20
+
21
+ ```
22
+
23
+ WebView.configuration.userContentController = userController
24
+
25
+ ```