Macアプリ内でWKWebViewの inspector を表示する方法を探しています。
WebKit1とWebViewでは、UserDefaultsでWebKitDeveloperExtrasをtrueに設定するだけで、Macアプリ内にインスペクターを表示するのが簡単でした。これにより、すべてのWebビューに「要素の検査」メニューが表示されます。
しかし、WKWebViewを備えたWebKit2では、これはもう機能していません。 WWDC14インスペクターセッションでは、資格を追加する必要があることを説明し、Safari開発者メニューからインスペクターを表示できます。これは、開発者である場合にのみ機能します。
private headers を調べたところ、_allowsRemoteInspectionが見つかりました。これにより、どういうわけか、インスペクターを起動して接続できると思いますが、そこからどこに行くべきかわかりません。
私はこれを公式に行う方法を望んでいますが、私のアプリはAppStoreにないので、プライベートなものを使用してもかまいません。
これはここでパッチされました: https://lists.webkit.org/pipermail/webkit-dev/2014-August/026790.html
このようなプライベートプロパティを公開するだけで使用できます。
@interface WKPreferences (WKPrivate)
@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
@end
これで、右クリックで「要素の検査」メニューが表示されます。
私がまだ見つける必要がある唯一のことは、コードから直接インスペクターを表示する方法です。
Swiftの場合、ブリッジヘッダーを作成する代わりに、直接設定できます
self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
Koenが発見したことに基づいて、このプロパティを設定するより簡単な方法は、キー値コーディングを使用することです。ブリッジングヘッダーは不要です。
迅速:
preferences.setValue(true, forKey: "developerExtrasEnabled")
またはObjective-Cでは:
[preferences setValue:@YES forKey:@"developerExtrasEnabled"];
キー値コーディングは、アンダースコアが前に付けられたプライベートのものを含め、キーに一致するメソッドとインスタンス変数を探します。
Koen Bokの答えに基づいて、Swiftに this Gist を付与します。これらのファイルを使用して、次の行をブリッジヘッダーに追加する必要があります。
#import "WKPreferences+DevExtras.h"
使い方は次のようになります
let webView = WKWebView(frame: window.frame)
webView.configuration.preferences.enableDevExtras();