web-dev-qa-db-ja.com

SwiftおよびmacOSアプリでWKWebViewを機能させるには

これが複製であるために撃たれる前に、そうではありません。ここでのWKWebViewに関するほとんどすべての質問は、macOSアプリではなくiOSアプリのWKWebViewに関するものです。違いは、macOSのNSViewControllerインターフェイスの代わりに実装されているUIViewControllerインターフェイスだけです。

Appleのドキュメントにあるサンプルコードと、オンラインで見つかるコントローラーコードは機能しません。問題なくコンパイルできますが、webviewは非アクティブのままです。

私が見なかったものはありますか、これは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!));
    }
}

nSViewControllerと交換されたUIViewControllerでこのように行われた場合も機能しません https://developer.Apple.com/documentation/webkit/wkwebviewからの画像

9
Ozymandias42

最初から始めることをお勧めします:

ロードするURLを設定します:

let myURLString = "https:yourWebLink"
let url = NSURL(string: myURLString)
let request = NSURLRequest(URL: url!)

WebViewでの初期化とロードのリクエスト:

let webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)

WKNavigationDelegateを実装して、ページのロード/エラーを追跡します:

extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        print("Started to load")
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("Finished loading")
    }

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
        print(error.localizedDescription)
    }
}

詳細なリファレンスチェック: https://iosdevcenters.blogspot.com/2016/05/creating-simple-browser-with-wkwebview.html

6
Jeba Moses