Avec iOS 11, Apple a ajouté la possibilité d'ajouter des prises WKWebViews sur vos plumes et vos story-boards. Cela semble fonctionner correctement lorsque vous utilisez la configuration par défaut WKWebViewConfiguration configurée automatiquement.
Cependant, j'aimerais pouvoir utiliser un WKWebViewConfiguration personnalisé. Est-il possible de régler cela avant ou après l'initialisation de WKWebView à partir de la nib?
Exemple de votre configuration de personnaliser.
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;
Vous pouvez essayer ceci:
let userContentController = WKUserContentController()
self.webView.configuration.userContentController = userContentController
Il n'est pas possible de définir la configuration de WKWebView via la sortie de WKWebView à partir du storyboard car la propriété de configuration de WKWebView est en lecture seule. Nous devons plutôt configurer par programme comme indiqué ci-dessous.
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!)
}
Et implémentez la méthode WKScriptMessageHandler delegate
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if (message.name == "callbackHandler"){
print("\(message.body)")
}
}
J'espère que cela t'aides...