iPhone OS 3.2; Representación en PDF; La interacción del usuario

Necesitaría crear una aplicación para iPad que representaría múltiples archivos PDF (un archivo contiene una página). Cada página debe ser desplazable, ampliable y si el usuario toca una parte del PDF, debería aparecer un sitio web o una galería de fotos.

Actualmente creo que podría hacer eso con:

A. UIWebView

Muestra muy bien los trabajos de PDF, desplazamiento y zoom. Pero parece un montón de problemas darse cuenta de las partes clicables del PDF.

No sé si podría usar CGPDFContextSetURLForRectObteniendo los eventos táctiles de UIWebView para hacer algo como CGPDFContextSetURLForRect, parece que sería un truco "bastante malo". Ver:http://github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.m

B. cuarzo

Encontré algunos recursos que describen cómo mostrar archivos PDF directamente a través de Quartz. Ver:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html

Esto permitiría usar CGPDFContextSetURLForRectPero no tengo idea de si esto, como UIWebView, ¿admite el desplazamiento y el zoom fuera de la caja?

¿Alguien podría iluminarme sobre esto por favor?

¡Gracias por tu tiempo!

[Editar: cambiado 3.0 a 3.2] [Editar: mi "solución"]

¡Hola!

Podría crear una implementación funcional para PNG pero no para PDF.

[Resumen] Mi solución fue Renderizar el contenido, interceptar los toques, recuperar las coordenadas relativas al contenido mostrado si es un toque y finalmente buscar qué hacer de un mapeo que contiene las áreas interactivas como coordenadas y qué hacer si ellos son presionados.

[Para PNG] Fue mucho más engorroso implementar algo así de lo que hubiera imaginado ... Y la implementación que obtuve depende en gran medida del contenido que desea mostrar porque esto funciona para UIImageView pero no pude hacerlo funcionar con UIWebView.

Primero necesita un UIScrollView y UIImageView para representar el contenido y admitir desplazamiento / zoom. Luego, debe implementar algún manejo para obtener los toques / gestos que le interesan. Consulte: developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Listings/1_TapToZoom_Classes_TapDetectingImageView_h.html

Esta muestra de apple proporciona todo lo que necesita para que esta parte funcione. Como beneficio adicional, también se encarga de transformar las coordenadas relativas a la vista del contenido, ¡lo cual es muy útil! (de lo contrario, solo sabría dónde sucedió el toque en la pantalla, que es solo la mitad de la información que necesita si su contenido es zoom / desplazable)

[Para PDF] Si desea hacer esto con PDF, lo primero sería que necesita usar un UIWebView (probablemente podría hacerlo a través de Quartz u otra cosa también)

¡Obtener los toques con un UIWebView es un verdadero dolor! Hay muchas maneras propuestas en la web y, además, nadie hizo lo que debería hacer. Después de días de búsqueda en Google encontré esta joya: cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

Entonces ... subclasificar UIWebView no lo lleva a ningún lado a diferencia de UIImageView y tiene que subclasificar UIApplicationMain e implementar su método para manejar eventos táctiles. Aquí puede reutilizar algunas de las "Cosas de manejo táctil" del examen de manzana desde arriba.

Ahora necesitaría traducir las coordenadas del toque a su contenido si es zoom / desplazable. ¡UIWebView NO hace esto por usted a diferencia de UIImageView!

Nunca pude averiguar cómo obtener la información requerida (qué parte del contenido con qué nivel de zoom) de un UIWebView para traducir las coordenadas, pero debido a los requisitos cambiados de PDF a PNG, no me importó que funcionara demasiado.

espero que esto ayude.

Respuestas a la pregunta(1)

Su respuesta a la pregunta