Как проверить, полностью ли UIWebView удален из проекта?
Решение:
- Открыть терминал. Откройте корневую папку вашего проекта в терминале.
- Выполните команду: grep -r "UIWebView".
- Эта команда выведет список всех модулей, содержащих «UIWebView». Не обновляйте эти модули или не удаляйте эти модули и повторно выполняйте команду шага 2. Повторяйте, пока все совпадения «UIWebView» не будут удалены.
Ниже приведены некоторые шаги, которые помогут вам обновить существующий UIWebView до WKWebView.
Импортируйте класс «WebKit
» в контроллер.
Предположим, вы используете UIWebView с именем «webViewMain». Затем перейдите к раскадровке и просто замените UIWebView на UIView. Убедитесь, что вы добавили в UIView те же ограничения, что и в UIWebView. Нарисуйте @IBOutlet из нового UIView в существующий @IBOutlet UIWebView. Здесь вам нужно изменить класс @IBOutlet с UIWebView на UIView, потому что вы заменили UIWebView на UIView.
Старый код: @IBOutlet weak var webViewMain: UIWebView!
Новый код: @IBOutlet weak var webViewMain: UIView!
Затем создайте новую переменную для создания нового WKWebView. КОД: var webView : WKWebView!
Добавьте ниже код, в котором вы загружаете request / html в UIWebView:
// WKWebView
// init and load request in webview.
webView = WKWebView(frame: self.webViewMain.frame)
webView.navigationDelegate = self
self.webView.load(request)
self.webViewMain.addSubview(webView)
webView.translatesAutoresizingMaskIntoConstraints = false
// Adding constraints from webView(WKWebView) to webViewMain (UIView)
webView.leadingAnchor.constraint(equalTo: webViewMain.leadingAnchor, constant: 0).isActive = true
webView.trailingAnchor.constraint(equalTo: webViewMain.trailingAnchor, constant: 0).isActive = true
webView.topAnchor.constraint(equalTo: webViewMain.topAnchor, constant: 0).isActive = true
webView.bottomAnchor.constraint(equalTo: webViewMain.bottomAnchor, constant: 0).isActive = true
// WKWebView
До сих пор вы заменяли UIWebView на WKWebView. Теперь перейдем к методам делегата. UIWebView имеет класс делегата: UIWebViewDelegate. WKWebView имеет класс делегата: WKNavigationDelegate.
Замените UIWebViewDelegate на WKNavigationDelegate.
Теперь идет сравнение методов делегата для UIWebView и WKWebView:
UIWebView: func webViewDidFinishLoad(_ webView: UIWebView)
WKWebView: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
UIWebView: func webViewDidStartLoad(_ webView: UIWebView)
WKWebView: func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
UIWebView: func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool
Здесь мы возвращаем true / false для загрузки / отмены навигации. WKWebView: func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
Здесь мы возвращаемdecisionHandler (.allow) / solutionHandler (.cancel) для загрузки / отмены навигации.
Для масштабирования соотношения сторон соответствуют содержимому webView (WKWebView).
var scriptContent = "var meta = document.createElement('meta');"
scriptContent += "meta.name='viewport';"
scriptContent += "meta.content='width=device-width';"
scriptContent += "document.getElementsByTagName('head')[0].appendChild(meta);"
webView.evaluateJavaScript(scriptContent, completionHandler: nil)
Чтобы установить высоту webView:
webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
if complete != nil {
self.webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (height, error) in
self.constraintWebViewProductDescriptionHeight.constant = height as! CGFloat
})
}
})
person
Akash Sharma
schedule
08.05.2020