iPhone OS 3.2; PDF-Rendering; Benutzerinteraktion

Ich müsste eine iPad-App erstellen, die mehrere PDF-Dateien rendert (eine Datei enthält eine Seite). Jede Seite sollte scrollbar und zoombar sein. Wenn der Benutzer auf einen Teil der PDF-Datei tippt, sollte eine Website oder eine Fotogalerie eingeblendet werden.

Derzeit denke ich, dass ich das entweder mit tun könnte:

EIN. UIWebView

Zeigt die PDFs an, das Scrollen und Zoomen funktioniert. Die anklickbaren Teile der PDF-Datei zu realisieren, scheint jedoch ein großes Problem zu sein.

Ich weiß nicht, ob ich CGPDFContextSetURLForRect verwenden könnteDie Touch-Events von UIWebView dazu zu bringen, so etwas wie CGPDFContextSetURLForRect zu machen, sieht so aus, als wäre es ein "ziemlich schlechter" Hack. Sehen:http: //github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.

B. Quar

Ich habe einige Ressourcen gefunden, die beschreiben, wie PDFs direkt über Quartz angezeigt werden. Sehenhttp: //developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.htm

Dies würde die Verwendung von CGPDFContextSetURLForRect ermöglichenAber ich habe keine Ahnung, ob dies - wie UIWebView - das Scrollen und Herauszoomen unterstützen würde?

Könnte mich jemand aufklären, bitte?

Vielen Dank für Ihre Zeit

[Edit: geändert 3.0 zu 3.2] [Edit: meine "Lösung"]

Hallo

Ich könnte eine funktionierende Implementierung für PNG entwickeln, aber nicht für PDFs.

[Abstract] Meine Aufgabe bestand darin, den Inhalt zu rendern, die Berührungen abzufangen, die Koordinaten in Bezug auf den angezeigten Inhalt abzurufen, wenn es sich um eine einzige Berührung handelt, und schließlich zu prüfen, was aus einer Zuordnung mit den interaktiven Bereichen als Koordinaten und was zu tun ist wenn sie angeklickt werden.

[Für PNG] Es war weitaus umständlicher, so etwas zu implementieren, als ich es mir vorgestellt hätte ... Und die Implementierung, an der ich gearbeitet habe, hängt stark von den Inhalten ab, die Sie anzeigen möchten, da dies für UIImageView funktioniert, aber ich konnte es nicht bekommen Arbeiten mit UIWebView.

Zunächst benötigen Sie eine UIScrollView und eine UIImageView, um den Inhalt zu rendern und das Scrollen / Zoomen zu unterstützen. Anschließend müssen Sie einige Schritte ausführen, um die gewünschten Berührungen / Gesten zu erhalten. Siehe: developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Listings/1_TapToZoom_Classes_TapDetectingImageView_h.htm

Dieses Beispiel von Apple bietet alles, was Sie brauchen, um diesen Teil zum Laufen zu bringen. Als Bonus kümmert es sich auch darum, die Koordinaten relativ zum Ansichtsfenster des Inhalts zu transformieren, was sehr praktisch ist! (ansonsten wüsstest du nur, wo das Tippen auf dem Bildschirm passiert ist und nur die Hälfte der Informationen, die du benötigst, wenn dein Inhalt zoom- / scrollbar ist.)

[Für PDF] Wenn Sie dies mit PDF tun möchten, müssen Sie zunächst eine UIWebView verwenden (wahrscheinlich können Sie dies auch über Quartz oder etwas anderes tun).

Die Berührung mit einem UIWebView ist ein echtes Problem! Es gibt viele Möglichkeiten im Internet und außerdem hat niemand das getan, was es tun sollte. Nach Tagen des Googelns fand ich dieses Juwel: cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.htm

So ... Die Unterklasse von UIWebView bringt Sie im Gegensatz zu UIImageView nicht weiter und Sie müssen die Unterklasse von UIApplicationMain festlegen und die Methode für die Behandlung von Berührungsereignissen implementieren. Hier können Sie einen Teil des "Touch-Handling-Stuff" aus dem Apfel-Beispiel von oben wiederverwenden.

Nun müssten Sie die Koordinaten der Berührung in Ihren Inhalt übersetzen, wenn dieser zoom- / scrollbar ist. UIWebView erledigt dies NICHT für Sie, im Gegensatz zu UIImageView!

Ich konnte nie herausfinden, wie ich die erforderlichen Informationen (welcher Teil des Inhalts in welchem Zoomlevel) von einer UIWebView erhalten konnte, um die Koordinaten zu übersetzen, aber aufgrund der geänderten Anforderungen von PDF zu PNG war es mir egal, dass es zu sehr funktionierte .

hoffe das hilft

Antworten auf die Frage(2)

Ihre Antwort auf die Frage