2010-05-26 1 views
4

여러 PDF 파일 (하나의 파일에 한 페이지 포함)을 렌더링하는 iPad-app를 만들어야합니다. 각 페이지는 스크롤 가능하고 확대 가능해야하며 사용자가 PDF의 일부를 탭하면 웹 사이트 나 사진 갤러리가 팝업됩니다. iPhone OS 3.2; PDF 렌더링; 사용자 상호 작용

현재 내가 할 수있는 생각 중 하나에 :

A.에있는 UIWebView

표시 PDF의 잘, 스크롤 및 줌 작동합니다. 그러나 PDF의 클릭 가능한 부분을 이해하는 데는 많은 어려움이 있습니다.

  1. 내가 그것을 몇 가지 "매우 나쁜"것 같은 내 자신이 보이는 CGPDFContextSetURLForRect 그런 짓을 할 수있는 UIWebView에서 터치 이벤트를 얻기 CGPDFContextSetURLForRect
  2. 를 사용할 수 있는지 모르겠어요 해킹. 참조 : http://github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.m

B. 석영

내가 PDF의 직접 석영을 통해 표시하는 방법을 설명하는 일부 리소스를 발견했다. 참조 : http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html

  1. CGPDFContextSetURLForRect
  2. 을 사용하여 허용 것이다 그러나 이것은한다면 난 아무 생각이 -있는 UIWebView처럼 - 스크롤 상자 밖으로 확대 지원?

아무도 나에게 이걸 가르쳐 주실 수 없습니까?

시간 내 주셔서 감사합니다.

: [편집 3.2 3.0 변경] [편집 : 내 "솔루션"]

안녕하세요!

PNG는 작동하지만 PDF는 작동하지 않습니다.

[요약] 내 솔루션은 콘텐츠를 렌더링하고 터치를 가로 채고 원 터치 인 경우 표시된 콘텐츠를 기준으로 좌표를 검색 한 다음 마지막으로 대화 형 영역이 좌표로 포함 된 매핑에서 수행 할 작업을 검색합니다. 그리고 그들이 클릭하면 어떻게 해야할지.

이 [PNG를 들어] 그것은 내가 상상 한 것보다 그렇게 somethink을 구현하는 방법이 더 복잡했다 ... 그리고 내가 일하고있어 구현이가있는 UIImageView에 대한 작업을 수행하기 때문에 표시 할 내용에 크게 의존하지만, UIWebView 함께 작동시키지 못했습니다.

먼저 콘텐츠를 렌더링하고 스크롤/확대/축소를 지원하려면 UIScrollView 및 UIImageView가 필요합니다. 다음 당신은 당신이에 관심이있는 /를 터치를 얻기 위해 몇 가지 처리를 구현하는 제스처를 필요 참조 :. developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Listings/1_TapToZoom_Classes_TapDetectingImageView_h.html

을 애플이 샘플 제공 이 부분을 작동시키는 데 필요한 모든 것. 보너스로 그것은 또한 매우 편리한 콘텐츠의 뷰포트를 기준으로 좌표를 변환하는 데주의를 기울입니다!(그렇지 않으면 화면상의 탭이 어디에서 일어나는 지 알 수있을 것입니다.

[PDF의 경우] PDF로이 작업을 원한다면 아마도 UIWebView를 사용해야 할 것입니다 (아마도 Quartz 또는 다른 것을 통해 할 수있을 것입니다).

UIWebView로 손 잡기가 정말 고통 스럽습니다! 웹상에서 제안 된 많은 방법들이 있지만 아무도 아무 일도하지 않아야합니다. 나는 인터넷 검색의 일 후에 이 보석을 발견 : cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html를

그래서 ...있는 UIWebView가있는 UIImageView 달리 어디서나 당신을 얻을하지 않으며 당신이이 서브 클래스 UIApplicationMain을 서브 클래스 화해, 터치 이벤트를 처리하기위한 메소드를 구현합니다. 여기에서 사과 - 시험지의 "Touch-Handling-Stuff"중 일부를 다시 사용할 수 있습니다.

확대/축소 가능한 경우 터치 좌표를 콘텐츠로 변환해야합니다. UIWebView UIImageView 달리 당신을 위해이 작업을 수행하지 않습니다!

UIWebView에서 필요한 정보 (zoomlevel의 콘텐츠 부분)를 좌표 변환하는 방법을 결코 이해할 수 없지만 PDF에서 PNG로 변경된 요구 사항으로 인해 얻지 못했습니다. 너무 많이 일해.

희망이 도움이됩니다.

+0

3.0? iPad 3.2 필요합니다. 3.2 원하는게 뭐야? – kennytm

+0

네, 미안 .. 의미 3.2 – DemonicTutor

답변

0

CGPDF * 연산자를 사용하면 UIImageView와 똑같이 작동하지만 PDF를 원본 이미지로 사용하는 UIPDFView를 작성할 수 있습니다. UIView의 사용자 정의 하위 클래스를 만들고 drawRect :를 구현하여 결국 CGContextDrawPDFPage를 호출합니다. 빠른 Google 검색을 기반으로 (키워드를 알고 있기 때문에), this page은 그 일을 아주 잘 설명합니다.

그러면 사용자 지정 UIView 하위 클래스를 UIImageView로 직접 대체하고 PNG 솔루션에서와 똑같이 진행할 수 있습니다.