Я пытаюсь перейти к определенной странице в документе 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.
Мы будем благодарны за любые идеи.
Спасибо!