From 71bd07d381e4fe758ad73ddcfa5a613f32ac8fbb Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 24 Jun 2022 09:31:36 +0700 Subject: [PATCH] chore(ios): the easy conversion parts --- .../WebBrowserViewController.swift | 33 ++++++++++--------- .../KMWebBrowser/WebBrowserViewController.xib | 8 +++-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.swift b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.swift index c6f1af76d4..e1827974ed 100644 --- a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.swift @@ -7,10 +7,10 @@ // import KeymanEngine -import UIKit +import WebKit -class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertViewDelegate { - @IBOutlet var webView: UIWebView! +class WebBrowserViewController: UIViewController, WKNavigationDelegate, UIAlertViewDelegate { + @IBOutlet var webView: WKWebView! @IBOutlet var navBar: UINavigationBar! @IBOutlet var toolBar: UIToolbar! @IBOutlet var navBarTopConstraint: NSLayoutConstraint! @@ -51,7 +51,7 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView observer: self, function: WebBrowserViewController.keyboardPickerDismissed) - webView.delegate = self + webView.navigationDelegate = self webView.scalesPageToFit = true if #available(iOS 13.0, *) { @@ -113,7 +113,7 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView let lastUrlStr = userData.object(forKey: webBrowserLastURLKey) as? String ?? "https://www.google.com/" if let url = URL(string: lastUrlStr) { let request = URLRequest(url: url) - webView.loadRequest(request) + webView.load(request) } } @@ -154,7 +154,7 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView url = URL(string: "http://\(urlString)") ?? url } let request = URLRequest(url: url) - webView.loadRequest(request) + webView.load(request) } func loadSearchString(_ searchString: String) { @@ -201,9 +201,10 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView dismiss(animated: true, completion: nil) } - func webView(_ webView: UIWebView, - shouldStartLoadWith request: URLRequest, - navigationType: UIWebView.NavigationType) -> Bool { + func webView(_ webView: WKWebView, + decidePolicyFor navigationAction: WKNavigationAction, + decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) -> Void { + let request = navigationAction.request if request.url?.lastPathComponent.hasSuffix(".kmp") ?? false { // Can't have the browser auto-download with no way to select a different page. // Can't just ignore it, either, as the .kmp may result from a redirect from @@ -213,7 +214,7 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView userData.synchronize() // The user is trying to download a .kmp, but the standard - // UIWebView can't handle it properly. + // WKWebView can't handle it properly. ResourceDownloadManager.shared.downloadRawKMP(from: request.url!) { file, error in // do something! @@ -234,24 +235,26 @@ class WebBrowserViewController: UIViewController, UIWebViewDelegate, UIAlertView } } - return false + decisionHandler(WKNavigationActionPolicy.cancel) + return } updateAddress(request) - return true + decisionHandler(WKNavigationActionPolicy.allow) + return } - func webViewDidStartLoad(_ webView: UIWebView) { + func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { UIApplication.shared.isNetworkActivityIndicatorVisible = true updateButtons() } - func webViewDidFinishLoad(_ webView: UIWebView) { + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { UIApplication.shared.isNetworkActivityIndicatorVisible = false appendCSSFontFamily() updateButtons() } - func webView(_ webView: UIWebView, didFailLoadWithError error: Error) { + func webView(_ webView: WKWebView, didFailNavigation error: Error) { UIApplication.shared.isNetworkActivityIndicatorVisible = false updateButtons() diff --git a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib index 0f692fa951..98d6fd6573 100644 --- a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib +++ b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib @@ -32,10 +32,14 @@ - + - + + + + +