2013-08-08 3 views
0

나는 html 파일을 UIWebview으로 읽고 있습니다. webViewDidFinishLoad에서 가로 스크롤에 대한 자바 스크립트 기능을 수행하고 있습니다. 아래 코드는 정상적으로 작동합니다. 하지만 나는 자바 스크립트 기능이 끝날 때 예측할 수 없습니다.stringByEvaluatingJavaScriptFromString 평가 porcess 완료 방법을 결정하는 방법은 무엇입니까?

보이는 webview에서 먼저 html 파일을로드 한 다음 스크립트를 실행하십시오. 그래서 나는 webViewDidFinishLoad에서 자바 스크립트 마무리를 결정할 수 있습니다.

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

    NSString *scriptString [email protected]"javascript:function initialize() { var eelam = document.getElementsByTagName('body')[0]; var ourH = window.innerHeight;var ourW = window.innerWidth; var fullH = eelam.offsetHeight; var pageCount = Math.ceil(fullH/ourH)+1; var padval = parseInt((screen.width*10)/100);var currentPage = 0; var newW = pageCount*ourW;eelam.style.height = (ourH - 30)+'px';eelam.style.width = (newW)+'px';eelam.style.webkitColumnGap = '5px'; eelam.style.margin = '25px'; eelam.style['margin-left']='2px';eelam.style.webkitColumnCount = pageCount; window.interface.setPageCount(pageCount);window.interface.setColumnWidth(screen.width);window.interface.setContent(eelam);window.interface.setColumnGap(padval);};"; 

    // set font 
    NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'", 
          textFontSize]; 

    [mywebview stringByEvaluatingJavaScriptFromString:scriptString]; 

    [mywebview stringByEvaluatingJavaScriptFromString:@"javascript:initialize()"]; 

    [mywebview stringByEvaluatingJavaScriptFromString:jsString]; 

    // scroll disable 
    UIView* row = nil; 
    for(row in webView.subviews){ 
     if([row isKindOfClass:[UIScrollView class] ]){ 
      UIScrollView* scrollRow = (UIScrollView*) row; 
      scrollRow.scrollEnabled = NO; 
      scrollRow.bounces = NO; 
      scrollRow.pagingEnabled=YES; 
     } 
    } 

// this code is also not use to handle my issue 
if ([[mywebview stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]) { 

     } 


} 

나에게 알려 주시기 바랍니다 사전에

덕분에,

답변

1

기능은 비동기 없습니다. 평가 기능에서 값을 반환하기 전에 끝납니다.

+0

네, 제 문제입니다. 어떻게 해결합니까? – Senthilkumar

+0

해결하고자하는 것이 무엇인지 잘 모르겠습니다. 비동기로 만드시겠습니까? 나는 그것이 실용적이거나 쉽게 성취 할 수 있다고 믿지 않는다. – carlossless

1

"stringByEvaluatingJavaScriptFromString"은 동기 함수입니다. 자바 스크립트가 실행을 완료하면 콜백이 반환됩니다. [mywebview의 stringByEvaluatingJavaScriptFromString : @ "자바 스크립트 :() 초기화"] 비동기

예제를 실행하려면 자바 스크립트를 제작하여 비동기 할 수 그러나

;

함수 초기화()에 함수를 작성 자바 스크립트

{ 의 setTimeout (함수() {// INIT}, 0);

네이티브 스레드를 사용하면 비어 있으며 즉시 3-4 밀리 초로 반환됩니다.