2010-08-05 44 views
1

我有一个UIWebView,用户可以在其中浏览一堆本地存储和链接的HTML文件。所有的作品不错,很好,但在这种特殊情况下:iPhone dev:UIWebview在转动设备时转换垂直位置

  • 用户导航到页面片段指向第3章,导致(正确)浏览器呈现来自片段锚和以后的HTML。
  • 用户向下滚动一点,说到第4章。
  • 用户将设备旋转到横向。
  • 的一个UIWebView现在跳回并显示第3章

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

回答

4

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

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

只是方向变化前:

  1. INT oldVerticalPosition =垂直滚动位置形成页
  2. INT olePageHeight =整个页面的高度

顶部改变方向后:

  1. newPageHeight =整个pa的高度GE
  2. 滚动页面,newPageHeight *(oldVerticalPosition/oldPageHeight)

This page给出了一些示例代码。

+0

好想法!这竟然是一种魅力!为了在旋转之前获得verticalPosition,我必须在shouldAutorotateToInterfaceOrientation中设置oldVerticalPosition和oldPageHeight。 – thomax 2010-08-09 07:11:11

+0

很高兴它的工作! :)我只是重新阅读我的文章,看到了一些错误...很好,你仍然有它的工作。 – 2010-08-09 09:27:41