2010-08-05 47 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