@@ -13,17 +13,40 @@ import WKWebViewJavascriptBridge
1313class ViewController : UIViewController {
1414 let webView = WKWebView ( frame: CGRect ( ) , configuration: WKWebViewConfiguration ( ) )
1515 var bridge : WKWebViewJavascriptBridge !
16+ let callbackBtn = UIButton ( type: . custom)
17+ let reloadBtn = UIButton ( type: . custom)
1618
1719 override func viewDidLoad( ) {
1820 super. viewDidLoad ( )
21+
22+ // setup webView
1923 webView. frame = view. bounds
2024 webView. navigationDelegate = self
2125 view. addSubview ( webView)
26+
27+ // setup btns
28+ callbackBtn. backgroundColor = . purple
29+ callbackBtn. setTitle ( " Call Handler " , for: . normal)
30+ callbackBtn. addTarget ( self , action: #selector( callHandler) , for: . touchUpInside)
31+ view. insertSubview ( callbackBtn, aboveSubview: webView)
32+ callbackBtn. frame = CGRect ( x: 10 , y: UIScreen . main. bounds. size. height - 80 , width: UIScreen . main. bounds. size. width * 0.4 , height: 35 )
33+ reloadBtn. backgroundColor = . orange
34+ reloadBtn. setTitle ( " Reload Webview " , for: . normal)
35+ reloadBtn. addTarget ( self , action: #selector( reloadWebView) , for: . touchUpInside)
36+ view. insertSubview ( reloadBtn, aboveSubview: webView)
37+ reloadBtn. frame = CGRect ( x: UIScreen . main. bounds. size. width * 0.6 - 10 , y: UIScreen . main. bounds. size. height - 80 , width: UIScreen . main. bounds. size. width * 0.4 , height: 35 )
38+
39+ // setup bridge
2240 bridge = WKWebViewJavascriptBridge ( webView: webView)
2341 bridge. register ( handlerName: " testiOSCallback " ) { ( paramters, callback) in
2442 print ( " testiOSCallback called: \( String ( describing: paramters) ) " )
2543 callback!( " Response from testiOSCallback " )
2644 }
45+ bridge. call ( handlerName: " testJavascriptHandler " , data: [ " foo " : " before ready " ] , callback: nil )
46+ }
47+
48+ override func viewWillAppear( _ animated: Bool ) {
49+ super. viewWillAppear ( animated)
2750 loadDemoPage ( )
2851 }
2952
@@ -46,6 +69,17 @@ class ViewController: UIViewController {
4669 print ( " webView loadDemoPage error: \( error) " )
4770 }
4871 }
72+
73+ @objc func callHandler( ) {
74+ let data = [ " greetingFromiOS " : " Hi there, JS! " ]
75+ bridge. call ( handlerName: " testJavascriptHandler " , data: data) { ( response) in
76+ print ( " testJavascriptHandler responded: \( String ( describing: response) ) " )
77+ }
78+ }
79+
80+ @objc func reloadWebView( ) {
81+ webView. reload ( )
82+ }
4983}
5084
5185extension ViewController : WKNavigationDelegate {
0 commit comments