2012-06-12 22 views
11

Sto provando a fare un landscape only app, ma non sono in grado di produrre alcuna rotazione.Perché la mia app Cordova/PhoneGap iOS non ruota quando il dispositivo ruota?

C'era un'impostazione autorotate in PhoneGap.plist ma in phonegap 1.8.0 posso trovarlo. Esiste ancora?

Cos'altro potrebbe esserci che la mia applicazione non sta ruotando?

UPDATE

che conosco hanno pagina web contenente una sola parola "test". Ho impostato il dispositivo di destinazione solo su iPad e ho attivato tutti e quattro gli orientamenti. Cosa potrebbe ancora essere sbagliato?

È necessario disporre di un tipo di documento html speciale? Devo includere alcuni cordova-1.8.0.js? Non sono riuscito a trovarne uno per iOS (!?!), Quindi l'ho provato con la versione di Android. Ho letto che l'API ora è la stessa quindi posso usare il file .js di Android?

risposta

11

risposta di PiTheNumber sembra OK per coloro bene con la modifica del codice nativo Cordova-generated .

seguito this JIRA issue su Cordova, e come ben spiegato in this blog, è anche possibile utilizzare i valori plist o definire una funzione window.shouldRotateToOrientation nel codice Javascript, che mi si addice molto bene.

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

Ciò consentirebbe l'orientamento del dispositivo per la pagina corrente (quindi, per tutta la vostra applicazione, se si tratta di una "una pagina app" come la maggior parte delle applicazioni sono Cordova). Nota, puoi anche decidere di abilitarlo in base al valore di rotazione in gradi, o addirittura, perché no, abilitarlo solo su certe viste, o lasciare che l'utente scelga all'interno della tua app HTML ... Bello, non è vero?

Per la cronaca, non ho avuto bisogno di fare nulla per ottenere una rotazione dell'iPhone iOS 8, mentre entrambi gli iPhone iOS 6 e iOS 7 non lo gestivano di default nell'attuale versione di Cordova (4.2.0, versione della piattaforma cordos ios "ios 3.7.0"). Questo perché è possibile assegnare diverse impostazioni di rotazione per "tipo di dispositivo" (tablet/telefono) su Xcode. La cosa da notare è che Cordova prima controllerà la funzione JS sopra se esiste, e quindi se la funzione non esiste o non ha permesso la rotazione, verrà utilizzata l'impostazione di rotazione Xcode.

+0

Sei un risparmiatore di vita !!! – MrCujo

8

In Classes/MainViewController.m return true:

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

Per iOS> = 6

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

Source

+0

config Questo risolto per me. (per me, con il progetto PhoneGap predefinito, la rotazione funzionava sull'iPad ma non sull'iPhone). – mpontillo

7

È possibile aggiungere UISupportedInterfaceOrientations

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

aggiungere questo file:

per Iphone:

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

per Ipad:

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

Questo aggiornamento moderno ha risolto i miei problemi. – nokturnal

+0

Ho provato questo prima degli altri. Ha funzionato come un fascino la prima volta. Nessun problema. Grazie! questa dovrebbe essere la risposta scelta !!! troppo pulito !!! – moeiscool

15

ho provato la soluzione JavaScript sopra e non ho ricevuto la gioia In Visual Studio 2015 I modificare config.xml in

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

tratto da Cordova 5 build command is deleting iOS device orientation settings

Non avevo bisogno del javascript solo l'impostazione

+0

sfortunatamente ora è rotto in cordova 5.4: https://issues.apache.org/jira/browse/CB-9975 – user206481

+0

@ user206481 Sto usando 5.4.1 e funziona bene – RezaRahmati

+0

** name = "orientation" ** non ha funzionato, ** name = "Orientamento" ** (mind BIG O) sembra corretto – shershen

Problemi correlati