2012-06-12 42 views
11

Estoy tratando de hacer un landscape only app, pero no puedo producir ninguna rotación en absoluto.¿Por qué mi aplicación Cordova/PhoneGap para iOS no gira cuando el dispositivo gira?

Solía ​​haber una configuración autorotate en PhoneGap.plist pero en phonegap 1.8.0 puedo encontrarla. ¿Todavía existe?

¿Qué otra cosa podría estar mal que mi aplicación no esté girando?

ACTUALIZACIÓN

que conozco tienen página web que contiene una sola palabra "prueba". Configuré el dispositivo de destino solo en el iPad y habilité las cuatro orientaciones. ¿Qué podría estar todavía mal?

¿Necesita tener un tipo especial de documento html? ¿Debo incluir algunos cordova-1.8.0.js? No pude encontrar uno para iOS (!?!) Así que lo probé con la versión de Android. He leído que la API ahora es la misma, ¿puedo usar el archivo .js de Android?

Respuesta

11

respuesta de PiTheNumber se ve bien para aquellos bien con la modificación del código nativo generado por Córdoba .

Siguiendo this JIRA issue en Córdoba, y tan claramente explicados in this blog, también se pueden utilizar valores plist o definir una función window.shouldRotateToOrientation en su código Javascript, que me viene muy bien.

window.shouldRotateToOrientation = function(degrees) { 
return true; 
} 

Esto permitiría a la orientación del dispositivo para la página actual (por lo que, para toda la aplicación, si se trata de una "una aplicación página" como la mayoría de las aplicaciones son Cordova). Tenga en cuenta que también puede decidir activarlo en función del valor de rotación en grados, o incluso, por qué no, habilitarlo solo en ciertas vistas o dejar que el usuario elija dentro de su aplicación HTML ... Bien, ¿verdad?

Para el registro, no tuve que hacer nada para obtener una rotación de manejo de iOS 8, mientras que tanto iOS 6 como iOS 7 no lo manejarían por defecto en la versión actual de Cordova (4.2.0, versión de la plataforma cordova ios 3.7 "ios 3.7.0"). Esto se debe a que se pueden otorgar diferentes configuraciones de rotación por "tipo de dispositivo" (tableta/teléfono) en Xcode. Lo que hay que notar es que Cordova comprobará primero la función JS anterior, si existe, y luego, si la función no existe o no permitió la rotación, se usará la configuración de rotación de Xcode.

+0

¡Eres un salvavidas! – MrCujo

8

En Classes/MainViewController.m retorno verdadera:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    //return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    return true; 
} 

Para iOS> = 6

- (BOOL)shouldAutorotate { 
    return YES; 
} 
-(NSUInteger)supportedInterfaceOrientations 
{ 
    return [[self.viewControllers lastObject] supportedInterfaceOrientations]; 
} 

Source

+0

la configuración Este fijada por mí. (Para mí, con el proyecto PhoneGap predeterminado, la rotación funcionaba en el iPad pero no en el iPhone). – mpontillo

7

Puede agregar UISupportedInterfaceOrientations

platroms/ios/{ProjectName}/{ProjectName-info.plist

Añadir este filas:

para Iphone:

<key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationPortraitUpsideDown</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 

para Ipad:

<key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationPortraitUpsideDown</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
+0

Esta actualización moderna resolvió mis problemas. – nokturnal

+0

Probé este antes que otros. Trabajó como un encanto la primera vez. Sin molestia. ¡Gracias! ¡esta debería ser la respuesta elegida! demasiado limpio !!! – moeiscool

15

Probé la solución JavaScript arriba y no tengo la alegría En Visual Studio 2015 I cambie el config.xml a

<preference name="orientation" value="all" /> 

tomado de Cordova 5 build command is deleting iOS device orientation settings

que no necesitaba el Javascript sólo la creación de

+0

lamentablemente esto ahora está roto en cordova 5.4: https://issues.apache.org/jira/browse/CB-9975 – user206481

+0

@ user206481 Estoy usando 5.4.1 y está funcionando bien – RezaRahmati

+0

** name = "orientation" ** no funcionó, ** name = "Orientation" ** (mind BIG O) parece correcto – shershen

Cuestiones relacionadas