2013-09-27 2 views
2

UIWebViewDelegate으로 javascript 통화를 잡습니다. 문제는 나를 위해 웹 측에Objective-c로 JavaScript 비동기 호출 캐치

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{  
NSDictionary *dictionary = [[[JSBridgeController alloc] init] js:request]; 
if (dictionary) { 
    if ([dictionary[@"methodName"] isEqualToString:@"gimmeUser"]) { 
     [self.delegate gimmeUserJS: dictionary]; 
    } 
    if ([ dictionary[@"methodName"] isEqualToString:@"initMe"]) { 
     [self.delegate initMeJS: dictionary]; 
    } 
} 
return YES;} 

: 같은

는 것 같습니다. 위의 코드와 마찬가지로 수십 개의 이러한 JS 요청을 보내고 비동기로 보냅니다. 그래서 두 번 같은 요청을하면 webview delegate는 그 중 하나만 볼 수 있고 다른 하나는 무시할 수 있습니다.

NSOperationQueueNSURLConnection sendAsynchronousRequest을 사용해 보았지만 성공하지 못했습니다.

각 비동기 JS 요청에 대해 shouldStartLoadWithRequest 대리인을 어떻게 호출 할 수 있습니까? 어떤 도움

감사합니다 ..보기에 대한 고유 식별자를 생성하는 것입니다 이것에 대해가는

답변

0

한 가지 방법.
그런 다음보기에 대한 참조가 포함 된 사전에 저장하십시오. 그런 다음 뷰는 JS의 "callback : callback? id ="+ your_passed_id로 이동하여 식별자를 다시 전달할 수 있습니다. 나는 그것이 복잡 알고 Javascript in UIWebView callback to C/Objective-C

하지만, 솔루션 ... 행운의 : 콜백 패턴에 MOR 정보에 대한

if ([[[inRequest URL] scheme] isEqualToString:@"callback"]) { 
    //then use the query string and parse for id 
    //in order to have individual control over callbacks 
    NSString *queryString = [[inRequest URL] query]; 
} 

볼!