@@ -15,6 +15,7 @@ class DocumentationViewController:
1515 }
1616
1717 private var webView : WKWebView !
18+ private var searchCVC : SearchControlViewController !
1819
1920 @objc dynamic var documentTitle : String ?
2021 @objc dynamic var documentURL : URL ?
@@ -46,6 +47,11 @@ class DocumentationViewController:
4647 userContentController. addUserScript ( pageObserver)
4748 }
4849
50+ if let pageSearchScript = readUserScript ( " page-search " ) {
51+ let pageSearch = WKUserScript ( source: pageSearchScript, injectionTime: . atDocumentEnd, forMainFrameOnly: true )
52+ userContentController. addUserScript ( pageSearch)
53+ }
54+
4955 if let uiSettingsScript = readUserScript ( " ui-settings " ) {
5056 let uiSettings = WKUserScript ( source: uiSettingsScript, injectionTime: . atDocumentEnd, forMainFrameOnly: true )
5157 userContentController. addUserScript ( uiSettings)
@@ -67,9 +73,11 @@ class DocumentationViewController:
6773 }
6874
6975 private func setupSearchControlView( ) {
70- let searchVC = SearchControlViewController ( )
76+ // Need to store strong ref to the VC, or IBActions don't work
77+ searchCVC = SearchControlViewController ( )
78+ searchCVC. delegate = self
7179
72- let searchView = searchVC . view
80+ let searchView = searchCVC . view
7381 searchView. translatesAutoresizingMaskIntoConstraints = false
7482
7583 webView. addSubview ( searchView) ;
@@ -189,5 +197,17 @@ class DocumentationViewController:
189197 }
190198 self . documentURL = URL ( string: location)
191199 }
200+ }
201+
202+ // MARK:- SearchControlDelegate
203+ extension DocumentationViewController : SearchControlDelegate {
204+ func search( term: String ) {
205+ let argsBytes = try ! JSONSerialization . data ( withJSONObject: [ " term " : term] )
206+ let args = NSString ( data: argsBytes, encoding: String . Encoding. utf8. rawValue) ! as String
207+ webView. evaluateJavaScript ( " search( ( \( args) )[ \" term \" ] ); " )
208+ }
192209
210+ func dismiss( ) {
211+ webView. evaluateJavaScript ( " resetSearch(); " )
212+ }
193213}
0 commit comments