Alguien me podría ayudar cómo manejar el cambio de orientación de eventos en javascript cuando se visita a través de uiwebview en el iphone?

Estoy tratando de capturar onorientationchange de eventos de javascript. Traté de código siguiente.

<style type="text/css" media="only screen and (max-device-width: 480px)">
    .portrait
    {
        width: 300px;
        padding: 0 15px 0 5px;
    }
    .landscape
    {
        width: 460px;
        padding: 0 15px 0 5px;
    }
</style>

<script type="text/javascript">
    window.onload = orientationchange;
    window.onorientationchange = orientationchange;
    function orientationchange() {
        if (window.orientation == 90
            || window.orientation == -90) {
            document.getElementById('contents').className = 'landscape';
        }
        else {
            document.getElementById('contents').className = 'portrait';
        }
    }
</script>

//and I have a div inside html

<div id="contents">
    my contents and description... e.t.c, and e.t.c...
</div>

Funciona bien en safari, pero cuando me visita la página utilizando uiwebview el cambio de orientación de eventos no es de ser capturado y mi funcionalidad deseada no podía ser logrado.

InformationsquelleAutor Waqas Raja | 2011-03-07

3 Comentarios

  1. 4

    Me gustaría señalar que este post: «el iphone-uiwebview-local-recursos-uso-javascript-y-manejo-onorientationchang», la respuesta directamente debajo del límite de respuesta no paga tributo a su pregunta: controlar los cambios de orientación en el código de la aplicación y se inyecta a los cambios con javascript. Estoy citando en la esperanza de que el autor no cuenta:

    «Una respuesta a tu segundo problema de la onorientationchange controlador no se llama en UIWebView:

    Me di cuenta de que la ventana.la orientación de la propiedad no funciona correctamente y la ventana.onorientationchange controlador no se llama. La mayoría de las aplicaciones sufren este problema. Esto puede ser solucionado mediante la configuración de la ventana.la orientación de la propiedad y de llamar a la ventana.onorientationchange en el willRotateToInterfaceOrientation método de la vista controlador que contiene su UIWebView:»

    • No necesito recursos locales, sólo quiero capturar el cambio de orientación de eventos en mi html javascript
    • He añadido una cita de un post he intentado, sin éxito, a mostrar. De hecho, es el problema que has dicho.
    • sí, gracias, mi problema está resuelto. pero es raro, a consumir orientación habilitado páginas html en una aplicación.
    • Eres bienvenido. Sí no debería ser así, pero es una buena solución para este error.
  2. 1

    Gracias u.

    Otra forma de escribir esto es:

    var onorientationchange = function()    {
        document.getElementById('contents').className =
          Math.abs(window.orientation == 90)? "landscape" : "portrait";
    }
    window.onload = function() {
        window.onorientationchange = window.onorientationchange
    }
    • Que buena pinta, voy a comprobarlo más tarde & vamos a saber si funciona.
    • Gracias por la respuesta, pero no funcionó.
    • Gracias por la respuesta, pero hay un paréntesis error en el código. Desea Matemáticas.abs(de la ventana.orientación) == 90, no el abs de la comparación…
  3. 1

    Poner esto en viewDidLoad:

    [[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hasOrientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
    
    - (void)hasOrientationChanged:(NSNotification *)notification {
        UIDeviceOrientation currentOrientation; 
        currentOrientation = [[UIDevice currentDevice] orientation];
        if(currentOrientation == UIDeviceOrientationLandscapeLeft){
            NSLog(@"left");
        }
    
        if(currentOrientation == UIDeviceOrientationLandscapeRight){
            NSLog(@"right");
        }
    
    }

    Ahora usted puede llamar a su webview con la orientación correcta 🙂

    • sí, es correcto en la aplicación. pero, ¿cómo podía yo saber en mi página html?

Dejar respuesta

Please enter your comment!
Please enter your name here