2012-01-26 42 views
9

Tôi đang cố gắng cuộn đến một trang cụ thể trong tài liệu pdf tôi đã tải trong UIWebView. Tôi có thể thực hiện việc này mà không gặp sự cố trong iOS 5 bằng cách sử dụng:Chiều cao nội dung UIWebView không chính xác trong scrollview.contentsize

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

Điều này chỉ hoạt động nếu trang đã được kích hoạt bởi một hành động của người dùng. Đối với trường hợp tôi muốn tải một pdf mới vào webview đến một trang cụ thể, tôi đang gặp rắc rối. Tôi yêu cầu tải trọng của pdf mới, và sau đó làm một cái gì đó giống như việc tải khi trang đã hoàn thành sau:

- (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]; 
} 

Trong khi myWebView.scrollView.contentSize.height là chiều cao đầy đủ tài liệu khi tôi chạy mã tương tự như trên một nút bấm sau khi tải tài liệu ban đầu, khi tôi tải một tài liệu mới và webViewDidFinishLoad kích hoạt myWebView.scrollView.contentSize.height bằng với chiều cao của UIWebview, chứ không phải nội dung bên trong nó. Điều này tất nhiên làm cho pageHeight nhỏ hơn nhiều so với nó cần và không di chuyển đến đúng vị trí.

Tôi đã thử hack như trì hoãn mã cuộn một chút sau khi suy nghĩ webViewDidFinishLoad có thể trang chưa tải đầy đủ mặc dù tôi nhận được cuộc gọi lại, nhưng trong những trường hợp contentSize.height là 0 vì lý do nào đó.

Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao.

Cảm ơn!

+0

Tôi đang gặp khó khăn với cùng một vấn đề. Bạn đã tìm ra được giải pháp nào chưa? – Niklas

+0

bản sao có thể có của [Cách xác định kích thước nội dung của UIWebView?] (Http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) –

Trả lời

1

để có được kích thước nội dung hoặc số trang chứa trong webview bạn có thể làm như sau:

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

và để di chuyển đến một vị trí nhất định trong webview của bạn, bạn có thể làm như sau:

[mywebview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(%d,0);",xPosition]]; 

Bạn thấy nó hữu ích.

Các vấn đề liên quan