Я пытаюсь перейти к определенной странице в документе 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.height равен высота UIWebview, а не содержимое внутри него. Это, конечно, делает pageHeight намного меньше, чем нужно, и не прокручивает в правильную позицию.
Я пробовал такие хаки, как задержка кода прокрутки на некоторое время после того, как webViewDidFinishLoad подумал, может быть, страница не полностью загружена, хотя я получаю обратный вызов, но в этих случаях contentSize.height по какой-то причине равен 0.
Любые идеи будут с благодарностью.
Спасибо!