Как мне заставить 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

Другие вопросы по тегам