2017-12-06 17 views
0

iOS Objective-C webviewアプリでJavaScriptCore/JSContextを使用して、JavaScript関数に値を返すことをお勧めします。 JavaScriptで例えばjavascriptに値を返すObjective-C関数を呼び出すことはできますか?

returnSomethingはObjective-Cの関数であるvar retVal = myObjC.returnSomething();

。議論のために、JavaScript関数に文字列を返すとしましょう。

私は値を返さないObjective-C関数を呼び出すことができましたが、値を返す方法を説明するものは何も見つかりませんでした。

これはJavaScriptCoreでも可能ですか、それとも間違ったアプローチですか?戻り値(同期)を待つためにjavascriptが必要です。

答えて

2

あなたがobjのCからJSにデータを渡す、期待しているとのObj CにJSから /データ受け渡しをstringByEvaluatingJavaScriptFromString を使用なJSContext

<!-- save as .html and load into UIWebview --> 

    <!DOCTYPE html> 
    <html> 
    <head> 
    <script> 
    function loadData(x){ 
    alert(x); 
    }  
    function myMeg(){ 
    passDatatoObjC("success");  
    } 
    </script> 
    </head> 
    </html> 

    function returnSomething(x){ 
    loadData(x); 
    } 

    function passDatatoObjC(x){ 
    passDatatoObjC(x);  
    } 

    #pragma mark - UIWebview dataource 

    -(void)webViewDidFinishLoad:(UIWebView *)webView{ 

     [self.svgWebMapView stringByEvaluatingJavaScriptFromString:@"returnSomething(10)"]; 

     JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; 
    context[@"passDatatoObjC"] = ^(NSString *msg) { 
    NSLog(@"%@",msg); 

    }); 
    } 
+0

を使用うん、私はあきらめ、ちょうどstringByEvaluatingJavaScriptFromString 'に行きます'それに適応するようにjavascriptを変更してください。かなりイライラする。お返事をありがとうございます。 – Dave

関連する問題