Почему приложение Кордова /PhoneGap iOS не вращается, когда устройство вращается?

Я пытаюсь сделать только ландшафтное приложение, но я не могу произвести никакого вращения вообще.

Раньше в PhoneGap.plist была установка autorotate, но в phonegap 1.8.0 я могу ее найти. Он все еще существует?

Что еще может быть неправильным, что мое приложение не вращается?

UPDATE

У меня есть веб-страница, содержащая только одно слово "тест". Я установил целевое устройство только на iPad и включил все четыре ориентации. Что еще может быть неправильным?

Нужно иметь специальный тип документа html? Нужно ли включать некоторые cordova-1.8.0.js? Я не мог найти его для iOS (!?!), Поэтому я тестировал его с версией Android. Я прочитал API теперь то же самое, поэтому я могу использовать файл android.js?

Ответ 1

Ответ PiTheNumber выглядит нормально для тех, кто отлично справляется с модификацией собственного кода, созданного Cordova.

После этот вопрос JIRA на Cordova, а также аккуратно объяснено в этом блог, вы также можете использовать значения plist или определить функцию window.shouldRotateToOrientation в вашем Javascript-коде, которая мне очень подходит.

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

Это позволит настроить ориентацию устройства для текущей страницы (так, для всего вашего приложения, если это "одностраничное приложение", как большинство приложений Кордовы). Обратите внимание, что вы также можете решить включить его на основе значения вращения в градусах или даже, почему бы и нет, включить его только в определенных представлениях или позволить пользователю выбрать в своем приложении HTML... Приятно, не так ли.

Для записи мне не нужно было ничего делать, чтобы получить поворот ручек iOS 8 iPad, в то время как iPhone iOS 6 и iOS 7 iPhone не будут обрабатывать его по умолчанию в текущей версии Кордовы (4.2.0, кордова Версия ios для платформы ios 3.7.0 "). Это связано с тем, что на Xcode можно назначить разные параметры поворота на" тип устройства" (планшет/телефон). Следует отметить, что Кордова сначала проверит функцию JS выше, если она существует, а затем, если функция не существует или она не разрешает вращение, будет использоваться настройка вращения Xcode.

Ответ 3

В Classes/MainViewController.m вернуть true:

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

Для iOS >= 6

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

Источник

Ответ 4

Вы можете добавить UISupportedInterfaceOrientations

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

добавить следующие строки:

Для Iphone:

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

Для Ipad:

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