2010-09-02 20 views
13

En el iPad, presento una vista en el lado de "detalles" de un controlador de vista dividida que es básicamente un UIWebView, que carga un archivo HTML en el paquete de la aplicación. La aplicación admite la rotación y oculta/muestra el lado "principal" de la división, según corresponda.Rotación de UIWebView en el iPad

Cuando el UIWebView se carga inicialmente en modo horizontal, su contenido parece "dimensionarse" correctamente ... el contenido es más alto que la pantalla, por lo que puede desplazarse verticalmente, pero no horizontalmente. (El contenido HTML es casi todo texto con estilo con CSS, con solo una imagen pequeña ~ 300x50 en la parte inferior.)

Si gira la pantalla a retrato, el contenido HTML parece tener el tamaño correcto - barra de desplazamiento vertical está presente, pero no horizontal, como lo fue inicialmente. Girando de vuelta al paisaje y todo sigue siendo color de rosa.

Hasta ahora, todo bien.

Ahora, si el UIWebView se carga inicialmente en orientación vertical, todo también se "dimensiona" correctamente (barra de desplazamiento vertical, no horizontal). Pero, si lo gira a horizontal, el contenido de repente obtiene una barra de desplazamiento horizontal, porque uno de los párrafos del texto es más ancho que el ancho de UIWebView. (No es coincidencia que, estoy seguro, pero que en el párrafo tiempo es el tamaño perfecto para la anchura ligeramente mayor sea el UIWebView tiene cuando está orientado como retrato.)

que estaba esperando/suponiendo que la rotación del iPad haría que el UIWebView a haga que su marco se redimensione, y cuando se cambie de tamaño, también cambie el tamaño de su contenido HTML de forma adecuada. (Piense en tomar una ventana del navegador web y reducirla). ¿Por qué no me sucede eso?

Me gustaría evitar utilizar la propiedad "Ajustar páginas para ajustar" porque el texto se contrae de forma no determinista.

+1

encontramos con este problema exactamente el mismo el otro día, que sólo ocurre cuando la aplicación se lanzó inicialmente en la orientación del paisaje y luego se rotó al modo vertical, si se lanza en modo vertical, se vuelve a ajustar correctamente cuando se gira en la vista horizontal. En mi caso, es un stop-stop porque mi contenido es un mapa (CloudMade) sin barras de desplazamiento mostradas y una buena parte del mapa termina fuera de la pantalla y el centro del mapa cuando se desplaza a un nuevo Lat/Lng está obviamente fuera del centro. Espero que haya alguna solución! – EagleOfToledo

+0

@EagleOfToledo Es el punto de vista de contenido también un 'UIWebView'? –

+0

Sí, pero en mi caso, UIWebView ocupa toda la pantalla (no SplitView/DetailView). – EagleOfToledo

Respuesta

29

acabamos de resolver mi problema con esto añadiendo esta etiqueta meta HTML 5 Ventana gráfica:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

a la sección de cabecera de mi HTML, tal vez una variación de esta etiqueta meta puede ayudar?

Aunque mi problema se activó cuando mi aplicación se inició en modo apaisado, mientras que la suya en modo retrato, puede ser una causa común.

También tuve otro problema divertida con la web View en el iPad y la solución común parece ser que la etiqueta meta:

iPad Simulator WebView/Google Maps API Issue

+0

Interesante. Dado que este HTML podría usarse en otros navegadores/plataformas más adelante, al principio no estaba seguro acerca de agregar esta etiqueta. Pero si lo simplifico con 'content =" initial-scale = 1.0 "', debería ser bastante benigno. ¡Gracias! –

+0

Perfecto. Esto funcionó para mí tanto en iPad como en iPhone. –

+0

Gracias. Es curioso que al eliminar "ancho = ancho del dispositivo" haya resuelto mi problema. – wanghq

0

También es posible hacer frente a esto poniendo

[myWebView recargar];

en el método shouldAutorotateToInterfaceOrientation

- pero si estás en una conexión 3G esto puede ser lento

+1

y perderá todo el estado de la página no guardado en cookies/sesión;) – tuxSlayer

Cuestiones relacionadas