2012-06-12 4 views
11

Ich versuche eine landscape only app zu machen, aber ich kann überhaupt keine Rotation erzeugen.Warum rotiert meine Cordova/PhoneGap iOS App nicht, wenn das Gerät rotiert?

Dort war eine autorotate Einstellung in PhoneGap.plist, aber in Phonegap 1.8.0 kann ich es finden. Gibt es es noch?

Was könnte noch falsch sein, dass meine Anwendung nicht rotiert?

UPDATE

Ich weiß Webseite nur ein Wort "Test" enthalten haben. Ich habe das Zielgerät nur auf das iPad eingestellt und alle vier Orientierungen aktiviert. Was könnte noch falsch sein?

Benötigen Sie einen speziellen HTML-Dokumententyp? Muss ich einige cordova-1.8.0.js hinzufügen? Ich konnte keine für iOS (!?!) Finden, also habe ich es mit der Android-Version getestet. Ich lese die API ist jetzt die gleiche, kann ich die android.js Datei verwenden?

Antwort

11

PiTheNumber Antwort für diejenigen, fein mit Modifizierung der Cordova generierten nativen Code OK aussieht .

Nach this JIRA issue auf Cordova, und so ordentlich erklärt in this blog, können Sie auch plist Werte verwenden oder eine window.shouldRotateToOrientation Funktion in Ihrem Javascript-Code, die sehr gut zu mir passt definieren. Dies würde die Orientierung der Vorrichtung für die aktuelle Seite (also für die ganze App, wenn es eine „eine Seite app“, da die meisten Cordova Apps sind) ermöglichen

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

. Beachten Sie, dass Sie diese Option auch basierend auf dem Rotationswert in Grad aktivieren können, oder warum nicht, nur in bestimmten Ansichten aktivieren oder den Benutzer in Ihrer HTML-App auswählen lassen ... Schön, nicht wahr?

Für die Aufnahme, ich musste nichts tun, um eine iOS 8 iPad Griff Rotation zu bekommen, während sowohl iOS 6 und iOS 7 iPhones würde es nicht standardmäßig in der aktuellen Cordova-Version (4.2.0, cordova ios Plattform Version "ios 3.7.0"). Das liegt daran, dass man auf Xcode verschiedene Rotationseinstellungen pro "Gerätetyp" (Tablet/Handy) vornehmen kann. Zu beachten ist, dass Cordova zuerst die obige JS-Funktion überprüft, falls diese existiert, und wenn die Funktion nicht existiert oder die Rotation nicht erlaubt hat, wird die Xcode-Rotationseinstellung verwendet.

+0

Du bist ein Lebensretter !!! – MrCujo

8

In Classes/MainViewController.m return true:

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

Für iOS> = 6

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

Source

+0

Dieses es für mich fixiert. (Für mich, mit dem Standard-PhoneGap-Projekt, funktionierte die Rotation auf dem iPad, aber nicht auf dem iPhone.) – mpontillo

7

Sie können UISupportedInterfaceOrientations hinzufügen

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

Fügen Sie diese Zeilen:

für Iphone:

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

für Ipad:

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

Dieses moderne Update löste meine Probleme. – nokturnal

+0

Ich habe dieses vor anderen versucht. Arbeitete wie ein Charme zum ersten Mal. Kein Stress. Vielen Dank! Dies sollte die gewählte Antwort sein !!! viel zu sauber !!! – moeiscool

15

ich die JavaScript-Lösung versucht, oben und bekam keine Freude In Visual Studio 2015 I Ändern Sie die Datei config.xml in

aus genommen Cordova 5 build command is deleting iOS device orientation settings

ich nicht die Javascript nur die Config brauchte Einstellung

+0

leider ist dies jetzt in cordova 5.4 gebrochen: https://issues.apache.org/jira/browse/CB-9975 – user206481

+0

@ user206481 Ich benutze 5.4.1 und es funktioniert gut – RezaRahmati

+0

** name = "orientierung" ** hat nicht funktioniert, ** Name = "Orientierung" ** (mind BIG O) scheint richtig – shershen

Verwandte Themen