2011-02-17 9 views
9

Tengo un UIWebView dentro de un UINavigationController en un UITabBarController. En ocasiones, las páginas mostradas por UIWebView contienen objetos de video HTML5.Modo de entorno compatible con video HTML5 en UIWebView en UITabBarController

El video comienza a reproducirse como se esperaba, pero no admite el modo de paisaje.

Creo que esto podría ser porque no todos mis controladores de vista dentro del UITabBarcontroller se autorrganan a modo apaisado (he oído que "todos los controladores de vista dentro de un UITabBarController deben soportar la autorrotación en modo horizontal para hacer que UITabBarController se autorrotee") .

cualquier persona que no conoce ninguna solución? Posiblemente alguna solución para abrir el vídeo en sí fuera de la aplicación?

Gracias!

ACTUALIZACIÓN 2011-03-15

Me voy a reformular un poco, pero no creo que sea suficiente para crear una nueva pregunta. Tengo la jerarquía de la siguiente manera:

UITabBarController 
    UINavigationController (NC-A) 
     UITableView 
     UIWebView (pushed from UITableView) 
    UINavigationController (NC-B) 
     A number of UITableViews 
    UINavigationController (NC-C) 
     A number of UITableViews 

Quiero que el UIWebView (en NC-A), que a veces contiene objetos de vídeo HTML5 (como se mencionó anteriormente), para apoyar el modo horizontal (y autorotate/-resize cuando el usuario voltea el propio teléfono)

Pero no quiero poner en práctica la auto rotación de las vistas controladas por NC-B y NC-a

para apoyar la auto rotación en un UITabBarController, no tengo leer que "todas las vistas actualmente 'en la parte superior' en cada una de las pestañas tienen que implementar la s houdAutorotateToInterfaceOrientation (y devuelve SÍ para la orientación en cuestión) ".

¿Hay alguna manera de solucionar esto?

+0

¿La propia vista web gira? ¿A qué te refieres con que no es compatible con el paisaje? ¿Se bloquea, no se carga, no se redimensiona? – russ36363

+0

No, no (ya que está dentro de un controlador de navegación que está dentro de un UITabBarController donde no todas las vistas visibles admiten en todo momento la autorrotación). Por "no es compatible con el modo horizontal" simplemente se entiende que no se está girando y volviendo a escribir automáticamente cuando se gira el teléfono :) –

Respuesta

1

La solución que elegí fue presentar el UIWebView de forma modal. Luego, la vista completa admite la orientación horizontal y, por lo tanto, también UIWebView.

2

Sería bastante hacky, pero podría capturar el evento "play" del video html5 en javascript, luego, iniciar una URL falsa que su delegado webView interceptaría.

A partir de ahí, cree un MPMoviePlayerController, conéctelo a su controlador de vista raíz (o colóquelo de manera modal encima de todo lo demás) y configure su autorrotación como usted lo desee.

El beneficio es que el usuario tiene garantizado el reproductor de películas nativo. Drawback es bastante hacky.

+0

Sí, sería un poco "hacky", pero creo que es una solución posible. De todos modos, lo resolví presentando la vista que contiene el UIWebView de forma modal. –