mostrando un pdf en uiwebview en ios9 a veces el desplazamiento está atascado

Estoy trabajando en una aplicación de ios escrita en swift, xcode7

Una vista tiene una UIWebView en ella.

Usando loadRequest(NSURLRequest) un file pdf desde el disco. Esto funciona bien, pero a veces el file pdf no se puede desplazar más allá de la primera página o lo que se ve primero en la pantalla. No puedo determinar qué causa el no desplazamiento, ya que a veces abro el mismo file nuevamente y luego se desplaza.

Tratando de desplazarse cuando no quiere rebotar la parte inferior de la pantalla y puede ver que hay otra página, pero no puede desplazarse a la vista.

El UIScrollView contenido dentro de UIWebView (este es el valor pnetworkingeterminado) sabe que hay más páginas, porque muestra "1 de 3" en la pantalla.

El UIWebView

  • tiene 'página de escalas para ajustar' marcada
  • Tiene habilitada la "interacción del usuario"
  • tiene 'toque múltiple' NO marcado
  • tiene 'autoresize subviews' marcados
  • tiene el modo 'Escala para llenar'

He probado lo siguiente:

  • comprobando si la vista de desplazamiento no es más grande que la pantalla colocando un borde a su alnetworkingedor: no, cabe en la pantalla y es tan grande como cabría esperar
  • configurando el UIScrollView.scollEnabled interno como verdadero en el código

En la aplicación, cuando se muestra UIWebview , se networkingimensiona en la pantalla al queuepsar un elemento por encima de él, pero lo he probado con alturas fijas y no cambia nada.

Cuando flashScrollIndicators() en el UIScrollView interno, esto es consistente con el desplazamiento o sin desplazamiento. Si ve la barra de desplazamiento, entonces es posible desplazarse. De lo contrario, no puede desplazarse más allá de la primera página.

¿Alguna otra idea que pueda probar?

Esto suena como un extraño problema de UIWebView . Dos cosas adicionales que puedes comprobar:

  • ¿Se resuelve el problema después de rotar? (me había pasado esto una vez)

  • Si llama flashScrollIndicators en el UIScrollView interno y no responde. ¿Es el UIScrollView interno un object nulo?

Otra solución es intentar y usar WKWebView . Podría resolver el problema. Solo asegúrese de usarla solo en las últimas versiones de iOS.

También puede networkingucir una capa e implementarla con CoreGraphics, ya que tiene el PDF en el dispositivo y no en la web ( documentos oficiales ). Probablemente hay un buen marco CocoaPod o Carthage que puedes usar para esto.

El problema subyacente fue el hecho de que antes de cargar un nuevo pdf, el UIWebView se borraba cada vez que se cargaba 'about: blank', que es la solución más sugerida para borrar la vista web. Sin embargo, cuando se trabaja con files PDF con tamaños de página diferentes y diferentes páginas, esto parece complicarse con la vista de desplazamiento incorporada.

La solución en este caso era crear una especie de pdf "en blanco" con una sola página (y tal vez un logotipo de aplicación para distinguirlo claramente para el usuario) y en lugar de cargar: en blanco, cargue este pdf en su lugar antes de mostrar el Vista web al usuario y mientras espera que se descargue el pdf real al dispositivo.