IOS 11の場合Appleにより、ペン先とストーリーボードにWKWebViewsアウトレットを追加する機能が追加されました。自動的に設定されるデフォルトのWKWebViewConfigurationを使用すると問題なく動作するようです。
ただし、カスタムWKWebViewConfigurationを使用できるようにしたいと思います。とにかく、WKWebViewがnibから初期化される前または後にこれを設定できますか?
カスタマイズ構成の例を見てみましょう。
NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
//Here you can customize configuration
[self.webView.configuration.userContentController addUserScript:wkUScript];
// self.webView.navigationDelegate = self;
// self.webView.contentMode = UIViewContentModeScaleAspectFill;
あなたはこれを試すことができます:
let userContentController = WKUserContentController()
self.webView.configuration.userContentController = userContentController
WKWebViewの構成プロパティは読み取り専用なので、ストーリーボードからWKWebViewのアウトレットを介してWKWebViewの構成を設定することはできません。代わりに、以下のようにプログラムで構成する必要があります。
class ViewController: UIViewController {
@IBOutlet weak var webContentView: UIView!
var webView: WKWebView?
let contentController = WKUserContentController()
contentController.add(self, name: "callbackHandler")
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
self.webView = WKWebView(frame: self.webContentView.bounds, configuration: configuration)
self.webContentView.addSubview(self.webView!)
}
WKScriptMessageHandlerデリゲートメソッドを実装します
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if (message.name == "callbackHandler"){
print("\(message.body)")
}
}
お役に立てれば...