Использование плагина StatusBar работает на симуляторе, а не на устройстве

На данный момент я не в себе, пытаясь решить проблему IOS7, из-за которой строка состояния перекрывает верхнюю часть моего приложения. Я предпринял следующие шаги:

  • phonegap plugins add org.apache.cordova.statusbar
  • Добавляю в мой основной config.xml следующее: <gap:plugin name="org.apache.cordova.statusbar"/> <preference name="fullscreen" value="true" /> <preference name="StatusBarOverlaysWebView" value="false" /> <preference name="StatusBarStyle" value="default" /> <feature name="StatusBar"> <param name="ios-package" value="CDVStatusBar" onload="true" /> </feature>
  • Читая различные сообщения SO, я несколько раз пытался добавить/удалить как плагин, так и платформу ios.

Плагин теперь успешно настраивает поведение строки состояния на симуляторе (работает cordova run ios), но когда я использую Phonegap Build для фактического запуска его на устройстве, увы, строка состояния по-прежнему перекрывает мое веб-представление приложения.

Заранее спасибо за помощь.


person Scott    schedule 07.07.2015    source источник
comment
поскольку у вас есть проблема только при использовании сборки phonegap, проблема должна быть в config.xml. В любом случае, попробуйте запустить локально на устройстве с помощью команды cordova run ios --device   -  person jcesarmobile    schedule 07.07.2015
comment
Да, на симуляторе все работает как положено (как я уже говорил). Вот только на устройстве у меня продолжаются проблемы. Что, надо сказать, расстраивает.   -  person Scott    schedule 07.07.2015
comment
Если вы используете Cordova, запустите ios --device, он должен установиться и работать на устройстве.   -  person jcesarmobile    schedule 07.07.2015


Ответы (1)


Вы можете открыть MainViewController.c (думаю, так он называется в Кордове), найти метод viewDidLoad: и вставить такой код:

if (IS_IOS7_OR_LATER) {
    CGRect *frame = self.webview.frame;
    frame = CGRectMake(0, 20, frame.size.width, frame.size.height);
    self.webview.frame = frame;
}

где IS_IOS7_OR_LATER — это макрос или другой код, чтобы проверить, работаем ли мы на iOS 7 или более поздней версии.

person paulvs    schedule 07.07.2015
comment
у него проблема со сборкой phonegap, он не может редактировать там нативный код - person jcesarmobile; 07.07.2015
comment
Да может, Кордова не перезаписывает изменения. - person paulvs; 07.07.2015
comment
Он использует сборку phonegap, то есть онлайн-сервис, который компилирует html, css и javascript в приложение, он не может изменить там собственный код. - person jcesarmobile; 07.07.2015
comment
Хотя спасибо за попытку :) - person Scott; 07.07.2015