2012-01-26 16 views
9

Próbuję przewinąć do określonej strony w dokumencie PDF, który załadowałem do interfejsu UIWebView. Jestem w stanie to zrobić bez problemu w iOS 5 z wykorzystaniem:Wysokość zawartości UIWebView nie jest dokładna w scrollview.contentsize

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

ta działa jednak tylko wtedy, gdy strona została załadowana do widzenia już i przewijania, aby zostało wywołane przez działanie użytkownika. W przypadku, gdy chcę załadować nowy pdf do widoku na konkretną stronę, mam problem. Ja zainteresowanie obciążenie nowej pdf, a następnie robi coś jak poniżej, gdy strona była zakończona ładowania:

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

Podczas myWebView.scrollView.contentSize.height jest pełna wysokość dokument po uruchomieniu podobnego kodu kliknięcie przycisku po wczytaniu początkowego dokumentu, po załadowaniu nowego dokumentu i wywołaniu webViewDidFinishLoad myWebView.scrollView.contentSize.height jest równa wysokości UIWebview, a nie zawartej w nim zawartości. To oczywiście powoduje, że pageHeight jest znacznie mniejsza niż musi i nie przewija do właściwej pozycji.

Próbowałem hacków takich jak opóźnianie kodu przewijania przez trochę po webViewDidFinishLoad myślenie może strona nie jest w pełni załadowana, mimo że otrzymuję wywołanie zwrotne, ale w tych przypadkach contentSize.height ma wartość 0 z jakiegoś powodu.

Wszelkie pomysły będą mile widziane.

Dzięki!

+0

Walczę z tym samym problemem. Czy znalazłeś jakieś rozwiązanie? – Niklas

+0

możliwy duplikat [Jak określić rozmiar zawartości UIWebView?] (Http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) –

Odpowiedz

1

uzyskać rozmiaru zawartości lub liczbę stron zawartych w WebView może wykonać następujące czynności:

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

i przejdź do pewnej pozycji w swojej WebView można wykonać następujące czynności:

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

Jest to przydatne.

Powiązane problemy