Как мне заставить WKWebView работать быстро и для приложения MacOS
До того, как это будет сбито за дублирование, это не так. Практически каждый вопрос о WKWebView здесь касается WKWebView в приложениях для iOS, а не в приложениях MacOS, с той разницей, что в основном реализован интерфейс UIViewController вместо интерфейса NSViewController в macOS.
Пример кода в документации Apple, а также код контроллера, который можно найти в Интернете, не работает. Хотя он без проблем компилируется, веб-представление остается неактивным.
Есть что-то, чего я просто не видел, или это ошибка в WKWebView?
Я даже скопировал некоторый код из учебников, показывающих, как это сделать для iOS, и просто изменил UIViewController на NSViewController (так как это было ЕДИНСТВЕННОЕ различие), но это не сработало.
Следующий код в ViewController.swift не работает. Это также не работает, если это class ViewController: NSViewController, WKUIDelegate
import Cocoa;
import WebKit;
class ViewController: NSViewController {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let url=URL(string: "http://safetec-cam.biz/images/webcam_extern/bad-nauheim_bahnhof_west.jpg");
webView.load(URLRequest(url: url!));
}
}
это также не работает, если это сделано так с UIViewController, замененным на изображение NSViewController с https://developer.apple.com/documentation/webkit/wkwebview
1 ответ
Я рекомендую начать с нуля:
Установите Ваш URL для загрузки:
let myURLString = "https:yourWebLink"
let url = NSURL(string: myURLString)
let request = NSURLRequest(URL: url!)
Инициализация и загрузка запроса в webview:
webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)
Реализуйте WKNavigationDelegate для отслеживания загрузки страницы / ошибки:
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
print(error.localizedDescription)
}
func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Strat to load")
}
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
print("finish to load")
}
Не забудьте добавить делегат WKNavigationDelegate в файл ViewController.swift.
class ViewController: UIViewController , WKNavigationDelegate{
Для дальнейшей справочной проверки: https://iosdevcenters.blogspot.com/2016/05/creating-simple-browser-with-wkwebview.html