2010-08-05 5 views
1

사용자가 로컬에 저장되어 상호 연결된 HTML 파일을 탐색 할 수있는 UIWebView가 있습니다. 이 특별한 경우를 제외하고는 모두 훌륭하게 작동합니다.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

+0

다행입니다! :) 나는 단지 내 게시물을 다시 읽고 몇 가지 실수를 보았습니다 ... 그래도 여전히 잘 작동하는 것이 좋습니다. –

관련 문제