Как я могу проверить, полностью ли удален UIWebView из проекта?
Решение:
- Открыть терминал. Откройте папку вашего проекта root в терминале.
- Запустите команду: grep -r "UIWebView".
- Эта команда выведет список всех модулей, содержащих «UIWebView». Не обновляйте эти модули и не удаляйте их, а затем снова выполните команду шага 2. Повторяйте до тех пор, пока все совпадения «UIWebView» не будут удалены.
Ниже приведены некоторые шаги, которые помогут вам обновить существующий UIWebView в WKWebView.
Импортировать « WebKit
”класс для контроллера.
Предположим, вы используете UIWebView с именем« webViewMain ». Затем go к вашей раскадровке и просто замените 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!
Добавьте ниже код, куда вы загружаете запрос / 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.
Теперь добавлено сравнение методов делегата для WI: UIWebView: *1036* *1039**1040* * 10View *
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.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
})
}
})