WKWebView espera la representación DOM antes de activar el código nativo

Tengo una aplicación de iOS híbrida que contiene un WKWebView , y tengo una function de JavaScript callNative puede llamar al código nativo de Objective C en el hilo principal.

En mi JavaScript, tengo la siguiente estructura

 modifyDOM(); // eg .show(), and .hide() stuff callNative('animateWKWebViewFrame'); 

Por alguna razón, se animateWKWebViewFrame (código nativo) antes de que se complete modifyDOM y se modifyDOM completamente. (Esto provoca un fallo visual.)

¿Cómo puedo forzar la representación completa de las modificaciones DOM antes de llamar al código nativo?

Estoy asumiendo que está utilizando jQuery debido a su comentario diciendo que modifyDOM calls show() y hide() . Si ese es el caso, entonces debe confiar en el parámetro complete para proporcionar una function que, a su vez, realice la llamada a su código nativo.

La documentation relevante está aquí:
http://api.jquery.com/hide/#hide-duration-complete
http://api.jquery.com/show/#show-duration-complete

Y finalmente, aquí hay un código de ejemplo:

 function modifyDOM() { someElement.show(400, function() {callNative('animateWKWebViewFrame');}); } 

¿Qué hay de hacer otra callback para detectar la function modifyDOM ()?

 // alloc webview WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; [theConfiguration.userContentController addScriptMessageHandler:self name:@"interOp"]; self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0) configuration:theConfiguration]; 

Una vez que haya finalizado la function modifyDOM (), llamará a la llamada "interOp" y luego podrá devolver la llamada initiate () con lo que desee y llamar a animateWKWebViewFrame

 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { NSDictionary *sentData = (NSDictionary*)message.body; NSString* command = sentData[@"command"]; LOG(@"[userContentController] command(%@)", command); if ( [command isEqualToString:@"DOMReady"] ) { // defining a JavaScript function NSString *jsFunctionText = @"Initiate({" "command:animateWKWebViewFrame" "});"; [self.webView evaluateJavaScript:jsFunctionText completionHandler:^(id object, NSError * err) { if ( err ) { LOG(@"[evaluateJavaScript] error(%@)", err); } }]; }