2012-01-26 12 views
9

私はUIWebViewで読み込んだPDFドキュメントの特定のページにスクロールしようとしています。UIWebViewのコンテンツの高さがscrollview.contentsizeで正しくない

pageHeight = webView.scrollView.contentSize.height/numberOfPages; 
[[webView scrollView] setContentOffset:CGPointMake(0,pageNumber*pageHeight) animated:YES]; 

ページがすでにビューにロードされているとまでスクロールはユーザアクションによってトリガーされた場合にのみしかし、作品を:私が使用してのiOS 5で問題なくこれを行うことができると思います。私は特定のページにwebviewに新しいPDFをロードする場合は、私は問題を抱えています。 myWebView.scrollView.contentSize.heightがフルドキュメントの高さですが、私は上のようなコードを実行するときに

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    int contentHeight = myWebView.scrollView.contentSize.height; 
    int pageHeight = contentHeight/5; // 5 total pages in example PDF 
    int scrollDelta = pageHeight*2; // Scroll forward 2 pages 

    [[myWebView scrollView] setContentOffset:CGPointMake(0,scrollDelta) animated:YES]; 
} 

:ページの読み込みが完了したとき、私は新しいPDFの負荷を要求し、次のようなものをやっています最初のドキュメントがロードされた後にボタンがクリックされ、新しいドキュメントを読み込み、webViewDidFinishLoadが発生すると、myWebView.scrollView.contentSize.heightはUIWebviewの高さに等しく、その内部のコンテンツではありません。これはもちろん、pageHeightを必要以上に小さくし、正しい位置にスクロールしません。

webViewDidFinishLoadの後にスクロールコードを少し遅らせるようなハックを試みましたが、コールバックを取得しているにもかかわらずページが完全にロードされていない可能性がありますが、何らかの理由でcontentSize.heightが0です。

任意のアイデアをいただければ幸いです。

ありがとうございます!

float w = [[mywebview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].scrollWidth;"] floatValue]; 
    int pageCount = ceil(w/self.view.frame.size.width); 

、あなたは次の操作を行うことがあなたのWebViewの中の特定の位置にスクロールする:

+0

私は同じ問題を抱えています。解決策は見つかりましたか? – Niklas

+0

[UIWebViewのコンテンツサイズを決定する方法]の複製が可能ですか?(http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) –

答えて

1

は、コンテンツのサイズか、次の操作を行うことがWebViewの中に含まれるページ数を取得します
[mywebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,0);",xPosition]]; 

あなたはそれが役に立ちます。

関連する問題