Высота содержимого UIWebView не точна в scrollview.contentsize

Я пытаюсь перейти к определенной странице в документе pdf, который я загрузил в UIWebView. Я могу сделать это без проблем в iOS 5, используя:

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

Это работает, однако, только если страница уже загружена в представление и прокрутка до запускается действием пользователя. В случае, когда я хочу загрузить новый PDF-файл в веб-просмотр на определенную страницу, у меня возникают проблемы. Я запрашиваю загрузку нового 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. Высота равна высоте UIWebview, а не содержимого внутри него. Это, конечно, делает pageHeight намного меньше, чем должно быть, и не прокручивается до правильного положения.

Я пробовал уловки вроде задержки кода прокрутки на некоторое время после webViewDidFinishLoad, думая, что страница не полностью загружена, хотя я получаю обратный вызов, но в этих случаях contentSize.height по какой-то причине равен 0.

Мы будем благодарны за любые идеи.

Спасибо!

9
задан user888867 26 July 2012 в 05:11
поделиться