2017-12-06 28 views
0

iOS Objective-C webview 앱에서 JavaScriptCore/JSContext를 사용하여 자바 스크립트 함수에 값을 반환하고 싶습니다. 자바 스크립트, 예를 들어javascript에 값을 반환하는 Objective-C 함수를 호출 할 수 있습니까?

: var retVal = myObjC.returnSomething();returnSomething 대물-C 함수이다

. 토론을 위해서 자바 스크립트 함수에 문자열을 반환한다고 가정 해 봅시다.

나는 값을 반환하지 않지만 값을 반환하는 방법을 설명하는 것을 찾을 수 없었던 Objective-C 함수를 호출 할 수있었습니다.

JavaScriptCore를 사용하여이 작업을 수행 할 수 있습니까? 아니면이 방법을 잘못 사용하고 있습니까? 반환 값 (동기)을 기다리는 javascript가 필요합니다.

답변

2

당신의 Obj C에 JS에서 데이터를 전달/stringByEvaluatingJavaScriptFromString를 사용하여 JS로 OBJ의 C로부터 데이터를 전달, 기대 바와 같이 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 '로 갈 것 사용 '그리고 그것을 수용하기 위해 자바 스크립트를 변경하십시오. 꽤 초조 한. 귀하의 회신에 감사드립니다. – Dave