我正在尝试滚动到我在UIWebView中加载的pdf文档中的特定页面。我可以在iOS 5中使用以下方式执行此操作:
pageHeight = webView.scrollView.contentSize.height / numberOfPages;
[[webView scrollView] setContentOffset:CGPointMake(0,pageNumber*pageHeight) animated:YES];
这仅在页面已经加载到视图中并且滚动到由用户操作触发时才有效。对于我想将新的pdf加载到webview到特定页面的情况,我遇到了麻烦。我正在请求加载新的pdf,然后在页面完成加载时执行以下操作:
- (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];
}
虽然myWebView.scrollView.contentSize.height是我在初始文档加载后在按钮上运行类似代码时的完整文档高度,但当我加载新文档并且webViewDidFinishLoad触发myWebView.scrollView.contentSize.height等于UIWebview的高度,而不是其中的内容。这当然会使pageHeight比它需要的小很多,并且不会滚动到正确的位置。
我已经尝试过像延迟滚动代码一样的webViewDidFinishLoad认为可能页面没有完全加载,即使我收到了回调,但在那些情况下,contentSize.height由于某种原因为0。 / p>
非常感谢任何想法。
谢谢!
答案 0 :(得分:1)
要获取内容大小或webview中包含的页数,您可以执行以下操作:
float w = [[mywebview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].scrollWidth;"] floatValue];
int pageCount = ceil(w/self.view.frame.size.width);
要滚动到网页浏览中的某个位置,您可以执行以下操作:
[mywebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,0);",xPosition]];
你觉得它很有用。