【问题标题】:iPhone dev: UIWebview shifts vertical location when rotating deviceiPhone 开发人员:UIWebview 在旋转设备时移动垂直位置
【发布时间】:2010-08-05 20:40:36
【问题描述】:

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

  • 用户导航到带有指向第 3 章的片段的页面,导致(正确地)浏览器从片段锚点开始渲染 HTML。
  • 用户向下滚动一点,例如第 4 章。
  • 用户将设备旋转为横向。
  • UIWebView 现在会跳回并显示第 3 章。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    就在方向改变之前:

    1. int oldVerticalPosition = 页面顶部的垂直滚动位置
    2. int olePageHeight = 整个页面的高度

    方向改变后:

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

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

    【讨论】:

    • 好主意!事实证明,这就像一个魅力!为了在旋转之前获得verticalPosition,我必须在 shouldAutorotateToInterfaceOrientation 中设置 oldVerticalPosition 和 oldPageHeight。
    • 很高兴它成功了! :) 我刚刚重新阅读了我的帖子,发现了一些错误......很好,你仍然可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多