2014-02-28 2 views
3

mathml 콘텐츠를 UIWebView으로로드하고 때로는 수학 표현식이 내 webview 프레임을 넘을 수 있으며 사용자가 테두리 외부의 콘텐츠를 보려면 스크롤해야합니다. 이런 종류의 상황을 처리하기 위해 나는 스크롤 가능한 내용 일 때마다 사용자에게 시각적 화살표 표시기를 보여줍니다. 내 문제는, 내 webViewDidFinishLoadwebview에 액세스하려고하면 scrollView.contentSize 정확한 콘텐츠 크기를 반환하지 않지만 일부 지연 후 다른 방법으로이를 확인하면 적절한 콘텐츠 크기가 표시됩니다. 그러나 타이머로 확인하는 것은 효율적인 방법이라고 생각하지 않습니다. 다음은 UIWebView webViewDidFinishLoad가 포함 된 scrollView의 적절한 콘텐츠 크기를 반환하지 않습니다.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"contentSize %@",NSStringFromCGSize(webView.scrollView.contentSize));// returning worng values, even if content size is more this is returning default frame values of webview 
    [self performSelector:@selector(checkContentSize) withObject:self afterDelay:1.5];//working properly after delay 
} 

어떻게 지연 시간 후 performSelector를 사용하지 않고 webView의 적절한 내용의 크기를 얻을 수있는, 내 코드인가?

나는 this post도 시도해 본 결과, shouldStartLoadWithRequestwebViewDidFinishLoad에서 그 이벤트를 캡처하려고했지만 사용하지는 않았습니다.

답변

7

float height = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight;"] floatValue]; 
1

문제는 webViewDidFinishLoad가 호출 될 때 그것은있는 UIWebView는 HTML 콘텐츠를로드 한 것을 의미한다는 것입니다보십시오. 그러나 여전히 HTML의 실제 높이를 정의하기 위해 HTML을 렌더링해야합니다. 짧은 지연 후에 올바른 크기를 얻는 이유가 여기에 있습니다.

콘텐츠의 정확한 높이를 얻는 가장 좋은 방법은 HTML이 완전히 렌더링되면 콘텐츠 크기를 UIWebView로 보내는 콘텐츠에 자바 스크립트를 추가하는 것입니다.

blogpost에서이를 수행하는 방법에 대한 간단한 자습서를 찾을 수 있습니다.

+0

@joem 실제로 scalesPageToFit 속성이 내 webview에서 활성화되어 있고 실제 콘텐츠가 너무 커요. 웹 콘텐츠가 너무 커요. scalesPageToFit은 크기를 조정하고 iPhone 창 경계에 따라 콘텐츠를 조정합니다. 당신의 게시물에 내가 말한 실제 문서의 내용 너비와 높이가 너무 webview 무엇보다 scalesPageToFit 이후 현재 렌더링됩니다. – Smith

+0

감사합니다. 이것은 나를 위해 일했습니다! –

관련 문제