use*_*867 9 pdf scroll uiwebview uiwebviewdelegate ios5
我正在尝试滚动到我在UIWebView中加载的pdf文档中的特定页面.我可以在iOS 5中使用以下方法执行此操作:
pageHeight = webView.scrollView.contentSize.height / numberOfPages;
[[webView scrollView] setContentOffset:CGPointMake(0,pageNumber*pageHeight) animated:YES];
Run Code Online (Sandbox Code Playgroud)
这仅在页面已经加载到视图中并且滚动到由用户操作触发时才有效.对于我想将新的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];
}
Run Code Online (Sandbox Code Playgroud)
虽然myWebView.scrollView.contentSize.height是完整文档高度,当我在初始文档加载后单击按钮时运行类似代码时,当我加载新文档并且webViewDidFinishLoad触发myWebView.scrollView.contentSize.height等于高度时UIWebview,而不是其中的内容.这当然使pageHeight比它需要的小很多,并且不会滚动到正确的位置.
webWeDidFinishLoad认为可能页面还没有完全加载,即使我收到了回调,但是我已经尝试过像延迟滚动代码一样的黑客攻击,但是在那些情况下,contentSize.height由于某种原因是0.
任何想法将不胜感激.
谢谢!
要获取 Web 视图中包含的内容大小或页面数,您可以执行以下操作:
float w = [[mywebview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].scrollWidth;"] floatValue];
int pageCount = ceil(w/self.view.frame.size.width);
Run Code Online (Sandbox Code Playgroud)
要滚动到网络视图中的某个位置,您可以执行以下操作:
[mywebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,0);",xPosition]];
Run Code Online (Sandbox Code Playgroud)
你发现它很有用。
归档时间: |
|
查看次数: |
2280 次 |
最近记录: |