iPhone 开发人员:旋转设备时 UIWebview 会改变垂直位置

发布于 2024-09-13 02:19:13 字数 290 浏览 5 评论 0原文

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

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

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

I have a UIWebView in which the user can browse a bunch of locally stored and interlinked HTML files. All works nice and well, except in this particular case:

  • User navigates to a page with a fragment pointing to chapter 3, causing (correctly) the browser to render the HTML from the fragment anchor and onward.
  • User scrolls a bit further down, say to chapter 4.
  • User rotates the device to landscape.
  • The UIWebView now jumps back up and shows chapter 3.

So my question is: Is there a way to make UIWebView display the users last location in the document, even though the user scrolls and/or rotates the device during browsing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

颜漓半夏 2024-09-20 02:19:13

我想原因是滚动保持在相同的像素位置,而不是与页面高度成比例。因此,当用户横向放置设备时,页面宽度会增加,页面高度会减小。

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

方向改变之前:

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

方向改变之后:

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

此页面 给出了一些示例代码。

I imagine the reason for that is, the scroll stays at the same pixel position, instead of proportional to the page height. So, when the user has the device in landscape, the page width increases and the page height decreases.

You may want to use JavaScript to scroll the page proportionally when orientation changes, i.e. use [webView stringByEvaluatingJavaScriptFromString:]. Here's the pseudo code:

Just before orientation change:

  1. int oldVerticalPosition = vertical scroll position form the top of the page
  2. int olePageHeight = the height of the whole page

After orientation change:

  1. newPageHeight = the height of the whole page
  2. Scroll the page to newPageHeight * (oldVerticalPosition / oldPageHeight)

This page gives some sample code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文