¿Por qué mi aplicación iOS de Cordova/PhoneGap no gira cuando gira el dispositivo?

Estoy tratando de hacer un aplicación solo horizontal, pero no soy capaz de producir ninguna rotación en absoluto.

Solía ​​haber una autorotate instalándose PhoneGap.plist pero en phonegap 1.8.0 puedo encontrarlo. ¿Todavía existe?

¿Qué más podría estar mal para que mi aplicación no esté rotando?

ACTUALIZACIÓN

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

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

preguntado el 12 de junio de 12 a las 16:06

4 Respuestas

Probé la solución de JavaScript anterior y no me gustó. En Visual Studio 2015, cambio el config.xml a

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

tomado de El comando de compilación Cordova 5 está eliminando la configuración de orientación del dispositivo iOS

No necesitaba el javascript solo la configuración

contestado el 23 de mayo de 17 a las 13:05

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

nombre="orientación" no funcionó, nombre="Orientación" (mente BIG O) parece correcto - Shershen

La respuesta de PiTheNumber se ve bien para aquellos que están de acuerdo con modificar el código nativo generado por Cordova.

Siguiendo este problema de JIRA en Córdoba, y como bien explicado en este blog, también puede usar valores plist o definir una función window.shouldRotateToOrientation en tu código Javascript, que me queda muy bien.

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

Esto habilitaría la orientación del dispositivo para la página actual (por lo tanto, para toda su aplicación si es una "aplicación de una página" como lo son la mayoría de las aplicaciones de Cordova). Tenga en cuenta que también puede decidir habilitarlo 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... Genial, ¿no es así?

Para que conste, no tuve que hacer nada para obtener una rotación de manejo de iPad con iOS 8, mientras que los iPhone con iOS 6 y iOS 7 no lo manejarían de forma predeterminada en la versión actual de Cordova (4.2.0, versión de la plataforma cordova ios "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 tener en cuenta es que Cordova primero verificará 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.

Respondido 02 Feb 15, 22:02

In Classes/MainViewController.m devuelve verdadero:

- (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];
}

Fuente

Respondido 11 Abr '13, 07:04

Esto me lo arregló. (para mí, con el proyecto PhoneGap predeterminado, la rotación funcionaba en el iPad pero no en el iPhone). - mpontillo

Puede agregar UISupportedInterfaceOrientations

platroms/ios/{Nombre del proyecto}/{Nombre del proyecto-info.plist

agregue estas 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>

Respondido el 31 de enero de 15 a las 20:01

Probé este antes que otros. Funcionó como un encanto la primera vez. Sin complicaciones. ¡Gracias! ¡Esta debería ser la respuesta elegida! demasiado limpio!!! - moeiscool

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.