2014-02-26 1 views
1

가로 스크롤이있는 경우 화살표 이미지를 표시하도록 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 메서드 내에서 UIWebView 스크롤 콘텐츠 크기를 가져 오려고합니다.UIWebView의 적절한 스크롤 내용 크기를 얻는 방법은 무엇입니까?

1) 스크롤 내용 크기를 얻기 위해 webView.scrollview.contentSize을 시도했지만 내용 크기가 더 크더라도 항상 webview 프레임 값을 제공합니다.

2) 심지어 위의 두번째 방법은 적절한 콘텐츠 크기를 제공하지 않습니다

CGSize contentSize = CGSizeMake([[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollWidth;"] floatValue], 
           [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"] floatValue]); 

을 시도했습니다.

정확한 webview의 포함 된 scrollView의 내용 크기를 얻기위한 직접적인 방법입니까?

답변

1

이것은 내가 생각하기에 당신이 바라는 답변이 아니지만 접근법이 잘못되었습니다.

- (BOOL)webView:(UIWebView *)webView should**Start**LoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

이 메서드를 호출하면 새 요청이 시작되기 때문에 호출됩니다. 이 시점에서 UIWebView 아직 귀하의 페이지를받을 수 있으므로 아마도 당신에게 올바른 contentSize 줄 수 없습니다. 나는 비슷한해야 할 일을했을 때

1

또한 내가 얼마 전에 쓴이 블로그 게시물을 offsetWidth/offsetHeight

CGSize contentSize = CGSizeMake([[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetWidth;"] floatValue], 
           [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue]); 
+0

이것은 내가에이를 제외하고, 나를 위해 작동 그것을 제대로 작동 시키려면 높이에 약 20 퍼트를 더하십시오. (내 경우에는 저에게 주요 관심사의 높이). 스크롤 뷰 내용이 삽입 된 것으로 보이지 않습니다. 0 인 것처럼 보입니다. –

+0

주의하십시오! 방금 확대/축소 배율 사이의 상관 관계를 발견했습니다. JS를 사용하여 크기를 _ 요청할 때'[scrollView setZoomScale : scale animated : YES];는 호출 순서에 관계없이 더 이상 영향을 미치지 않습니다. –

관련 문제