iPhone dev: UIWebview смещает вертикальное положение при вращении устройства - PullRequest
1 голос
/ 06 августа 2010

У меня есть UIWebView, в котором пользователь может просматривать кучу локально сохраненных и связанных HTML-файлов.Все работает хорошо и хорошо, за исключением этого конкретного случая:

  • Пользователь переходит на страницу с фрагментом, указывающим на главу 3, в результате чего (правильно) браузер отображает HTML-код с привязки фрагмента и далее.
  • Пользователь прокручивает немного дальше, скажем, к главе 4.
  • Пользователь поворачивает устройство в горизонтальное положение.
  • Теперь UIWebView переходит обратно и показывает главу 3.

Итак, мой вопрос: есть ли способ заставить UIWebView отображать последнее местоположение пользователя в документе, даже если пользователь прокручивает и / или поворачивает устройство во время просмотра?

1 Ответ

4 голосов
/ 06 августа 2010

Я предполагаю, что причина в том, что прокрутка остается в том же положении пикселя, а не пропорционально высоте страницы. Таким образом, когда пользователь имеет устройство в альбомной ориентации, ширина страницы увеличивается, а высота страницы уменьшается.

Возможно, вы захотите использовать JavaScript для пропорциональной прокрутки страницы при изменении ориентации, т.е. используйте [webView stringByEvaluatingJavaScriptFromString:]. Вот псевдокод:

Непосредственно перед изменением ориентации:

  1. int oldVerticalPosition = положение вертикальной прокрутки в верхней части страницы
  2. int olePageHeight = высота всей страницы

После изменения ориентации:

  1. newPageHeight = высота всей страницы
  2. Прокрутка страницы до newPageHeight * (oldVerticalPosition / oldPageHeight)

На этой странице приведен пример кода.

...