NativeControls и ориентация устройства - PullRequest
2 голосов
/ 09 августа 2011

Я использую плагин NativeControls и собственный нижний колонтитул в своем приложении PhoneGap для iOS.

Когда я поворачиваю свой iPhone, нижний колонтитул также вращается, но на нем отображается только черная полоса без значка ... А когда я перехожу на другую страницу, весь интерфейс полностью разрушается, и мне нужно перезапустить приложение.

Кто-нибудь знает, как это решить? Может быть, плагин NativeControls не совместим с альбомной ориентацией?

1 Ответ

0 голосов
/ 31 марта 2012

Поддержка ротации устройств никогда не была реализована.Вот шаги:

1) добавить слушателя ориентации:

document.addEventListener("orientationChanged",redrawTabBar,false);

2) добавить функцию, вызываемую при изменении ориентации:

function redrawTabBar() {
    if (navigator.notification){
        PhoneGap.exec("NativeControls.redrawTabBar");
    }
}

3) добавьте метод в фактический плагин (.m):

- (void)redrawTabBar:(NSArray*)arguments withDict:(NSDictionary*)options
{
    tabBar.frame=CGRectMake(0, self.webView.frame.size.height, self.webView.frame.size.width, 50);
}

4) убедитесь, что событие directionChanged вызывается веб-представлением.Внутри MainViewcontroller.m

- (void)didRotateFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation
{
int i = 0;  
    switch (self.interfaceOrientation){
        case UIInterfaceOrientationPortrait:
            i = 0;
            break;
        case UIInterfaceOrientationPortraitUpsideDown:
            i = 180;
            break;
        case UIInterfaceOrientationLandscapeLeft:
            i = -90;
            break;
        case UIInterfaceOrientationLandscapeRight:
            i = 90;
            break;
    }

    NSString* jsString = 
    @"(function(){"
    "var e = document.createEvent('Events');"
    "e.initEvent('orientationChanged');"
    "document.dispatchEvent(e);"
    "})();";
    NSLog(@"Orientation Changed");
    [self.webView stringByEvaluatingJavaScriptFromString:jsString];
}
...