iPhone dev:UIWebview在旋转设备时移动垂直位置

时间:2010-08-05 20:40:37

标签: iphone iphone-sdk-3.0 uiwebview scroll rotation

我有一个UIWebView,用户可以在其中浏览一堆本地存储和相互链接的HTML文件。一切都很好,除了在这种特殊情况下:

  • 用户导航到包含指向第3章的片段的页面,导致(正确)浏览器从片段锚点向前呈现HTML。
  • 用户向下滚动,对第4章说。
  • 用户将设备旋转为横向。
  • UIWebView现在重新启动并显示第3章。

所以我的问题是:有没有办法让UIWebView显示用户在文档中的最后位置,即使用户在浏览过程中滚动和/或旋转设备?

1 个答案:

答案 0 :(得分:4)

我想是这样的原因是,滚动停留在相同的像素位置,而不是与页面高度成比例。因此,当用户使用横向设备时,页面宽度会增加,页面高度会降低。

您可能希望使用JavaScript在方向更改时按比例滚动页面,即使用[webView stringByEvaluatingJavaScriptFromString:]。这是伪代码:

在改变方向之前:

  1. int oldVerticalPosition =垂直滚动位置构成页面顶部
  2. int olePageHeight =整页的高度
  3. 改变方向后:

    1. newPageHeight =整页的高度
    2. 将页面滚动到newPageHeight *(oldVerticalPosition / oldPageHeight)
    3. This page提供了一些示例代码。