Javascript a la request Obj-c .. devolviendo el valor a Javascript

Mi aplicación tiene un componente UIWebView que llama a las funciones Obj-c utilizando 'webView: shouldStartLoadWithRequest: navigationType:' Analizo la request aquí y luego invoco el código Obj-c requerido.

Lo que me gustaría hacer a continuación es devolver un valor al Webview … por ejemplo, estado, post, etc.

He intentado varias soluciones en este momento, pero nada parece funcionar. No estoy publicando el código ahora, ya que es lo suficientemente básico.

Un bash que vale la pena mencionar es usar 'stringByEvaluatingJavascriptFromString' que establecería variables globales en la página UIWebView. Luego traté de ejecutar un ciclo infinito (con time de espera) que vería un cambio en la variable global. Javascript sabría entonces que una respuesta ha regresado de la function Objective-c. Esto no parece funcionar ya que el "bucle infinito" no parece estar bloqueando el hilo de javascript.

¿Alguien ha encontrado este problema antes?

Parece que hay una function 'windowScriptObject' que puede permitirme el acceso directo a los objects de script de UIWebViews. Lástima que no esté disponible en iOS. ¿Alguien sabe de soluciones para esto? Mirándolo ahora …

Gracias.

Artículo sobre esto en OS X aquí .

webView:shouldStartLoadWithRequest:navigationType: se webView:shouldStartLoadWithRequest:navigationType: antes de cargar el contenido de la vista web, por lo que no habrá un object de script cargado todavía. El object script se cargará cuando el delegado reciba un webView:didClearWindowObject:forFrame: y, a continuación, podrá comenzar a utilizar [scriptObject evaluateWebScript: @"alert('hello')"] para evaluar el javascript y establecer variables globales. Lo que creo que su problema es que hay una condición de carrera entre el object de script que se está cargando y su callback, y en espera del object de script debe solucionar el problema.

Entonces, he decidido ir por la ruta de callback.

Haré una llamada para ejecutar el código JS en Obj-C y luego no haré nada en el browser. La siguiente pieza de código se ejecutará en la function de callback que se llama desde Objective-c, una vez que se realiza todo su trabajo.