NativeControls和设备方向

时间:2011-08-09 13:27:45

标签: cordova device-orientation

我在PhoneGap iOS应用中使用NativeControls插件和原生页脚。

当我旋转iPhone时,页脚栏也会旋转,但它只显示一个没有任何图标的黑条...当我移动到另一页时,整个界面完全坏了,我需要重启应用程序。

有谁知道如何解决它?也许NativeControls插件与横向不兼容?

1 个答案:

答案 0 :(得分:0)

从未真正实现过对设备轮换的支持。 以下是步骤:

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)确保webview触发了orientationChanged事件。在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];
}