IBM Worklight 6.0.0 - 对 iOS 不工作使用 WebViewOverlay 示例代码
Posted
技术标签:
【中文标题】IBM Worklight 6.0.0 - 对 iOS 不工作使用 WebViewOverlay 示例代码【英文标题】:IBM Worklight 6.0.0 - Using WebViewOverlay sample code for iOS Not Work 【发布时间】:2013-11-23 02:42:08 【问题描述】:使用 Worklight v6.0.0 代码示例/教程“在混合应用程序中集成服务器生成的页面”(http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/IntegratingServerGeneratedPagesProject.zip) 允许集成 Web 内容。该代码示例在 ios 7/XCode 5 中不起作用。当显示 web 视图覆盖页面时,它显示白色空白页面。
但是,android 版本可以正常工作。
如何让 WebViewOverlay 在 iOS 7/XCode 5 上工作?
【问题讨论】:
【参考方案1】:我正在使用 Worklight Studio 6.0.0.20130926-1933、Xcode 5.0.2 和 iOS 7.0.3 模拟器。当我第一次导入项目时,它在启动时崩溃了。这与 iOS7 有关,因为它可以在 iOS6 模拟器上运行。
我删除了iPhone环境重新创建(包括iPhone环境的css和js文件夹中的自定义,并在Xcode中安装了WebViewOverlay插件),修复了崩溃。那时,应用程序运行良好,WebViewOverlay 打开并填充了内容。但它不会关闭。我不得不修改 WebViewOverlayPlugin.m 中的 close() 方法
- (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 .
【讨论】:
谢谢,大卫。试过 [[[appDelegate window] subviews] objectAtIndex:1];它给了我数组索引错误。将 objectAtIndex 设置为 0。没有收到错误但空白页。终于在挖了几个小时的 Cordova iOS 代码之后。用这个来解决这个问题:UIView *appView = self.viewController.view。它现在像以前的 iOS 5/6 和 7 一样工作。 如果您将数组从索引中取出,那么您错过了我添加的条件,但无论如何,您的解决方案看起来更好。令我困惑的是为什么 close() 中的问题导致 Web 视图无法正确加载。当我这样做时,它加载正常,但无法正常关闭。 发现 WLCordovaAppDelegate 存在一些问题。它不像之前让 viewController 共享添加的相同 wevViews 那样工作。所以这是 Codova 管理 webViews 的方式。您可以隐藏/显示/添加动画...以上是关于IBM Worklight 6.0.0 - 对 iOS 不工作使用 WebViewOverlay 示例代码的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight 6.0.0.1 - 应用程序认证
IBM Worklight 5.0.6 - 在哪里可以找到 5.0.6 存储库?
IBM Worklight 6.0.0.1 - jQuery 调色板不显示
IBM Worklight 6.0.0.1 - Dojo Mobile 图形不出现