Как я могу заставить 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 = 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