2013-11-23 31 views
0

使用Worklight v6.0.0代码示例/教程“将服务器生成的页面集成到混合应用程序中”(http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/IntegratingServerGeneratedPagesProject.zip)允许集成Web内容。代码示例在iOS 7/XCode 5中不起作用。显示Web视图叠加页面时,它显示白色空白页面。IBM Worklight 6.0.0 - 使用iOS不工作的WebViewOverlay示例代码

但是,Android版本正常工作。

我怎样才能让WebViewOverlay在iOS 7/XCode 5上工作?

回答

0

我正在使用Worklight Studio 6.0.0.20130926-1933,Xcode 5.0.2和iOS 7.0.3模拟器。当我第一次导入项目时,它在启动时崩溃。这是关于iOS7的,因为它在iOS6模拟器上工作。

我删除了iPhone环境并重新创建了它(包括iPhone环境的css和js文件夹中的自定义设置,并在Xcode中安装了WebViewOverlay插件),并修复了崩溃问题。在这一点上,应用程序运行良好,WebViewOverlay打开并填充了内容。但它不会关闭。我不得不修改close()方法中WebViewOverlayPlugin.m

- (void)close:(CDVInvokedUrlCommand*)command{ 
    NSLog(@"WebViewOverlayPlugin :: close"); 

    WLCordovaAppDelegate *appDelegate = (WLCordovaAppDelegate*) [[UIApplication sharedApplication] delegate]; 

    if ([[[appDelegate window] subviews] count] > 1) { 
     UIView *appView = [[[appDelegate window] subviews] objectAtIndex:1]; 

     for (UIView *view in [appView subviews]){ 

      if (view.tag==12345) { 

       [view removeFromSuperview]; 
      }} 
    } 
} 

它看起来像什么改变,因为样品是书面的,并objectAtIndex:0需要更改为:objectAtIndex:1。实际上知道客观c的人可能可以在我添加的条件(并解释为什么发生这种变化)方面做得更好,但是随着iPhone环境的重新创建,以及close()的上述实现似乎都可以在iOS 7上运行。

+0

谢谢大卫。试过[[[appDelegate window]子视图] objectAtIndex:1];它给了我阵列索引错误。将objectAtIndex置为0.没有得到错误,但是出现空白页面。最后在挖掘Cordova iOS代码几个小时后。用它来解决这个问题:UIView * appView = self.viewController.view。它现在像以前的iOS 5/6和7一样工作。 – user2261927

+0

如果您从索引中获取数组,那么您错过了我添加的条件,但在任何情况下,您的解决方案都会更好。令我困惑的是,为什么close()中的问题导致Web视图无法正常加载。当我做到了,它装得很好,但只是不能正常关闭。 –

+0

发现与WLCordovaAppDelegate有关的问题。它不像以前那样让viewController共享相同的wevViews。所以这是Codova管理webViews的方式。你可以隐藏/显示/添加动画... – user2261927

相关问题