2016-05-13 113 views
0

我正在为使用cordova 6.0.0的混合移动应用程序工作。Cordova iOS相机插件在尝试从inappbrowser中打开时不工作

根据我的要求,我必须在web视图中打开动态url。该网址将由API响应提供。

我在应用程序浏览器插件中使用cordova进行web查看。

https://github.com/apache/cordova-plugin-inappbrowser

现在,当用户点击在网页视图中打开页面中的任何链接,我必须赶上click事件,并找到该用户点击了锚标记的href值。

如果目标网址符合我的条件,我必须在不关闭网络视图的情况下打开相机,以便即使在照片成功拍摄后,我仍可以保持网络视图的状态。

对于摄像机功能,我正在使用cordova默认摄像头插件。

我已经在Android中成功完成了这项工作。

但在IOS的情况下,我无法打开相机。正如我已经检查了操作相机插件里面去,但它给下面警告

Warning: Attempt to present <CDVCameraPicker: 0x1570d1800> on <MainViewController: 0x1565624a0> whose view is not in the window hierarchy! 

我已经检查了这方面很多职位和一些民族建议,而不是使用Web视图的iFrame。但我无法捕捉动态加载的Iframe中的点击事件。

有人可以请帮助什么应该是这个解决方案,有没有什么办法可以按照我的要求做到这一点。

在此先感谢

+0

有相同的警告。尝试从jQuery点击事件处理程序中调用navigator.camera。 – tfmontague

回答

0

我最近有同样的问题,并设法解决它。您必须打开InaAppBrowser作为子视图才能在其上显示相机。如果InAppBrowser插件存在,所有修改都将在CDVInAppBrowser.m中进行。

您必须修改CDVInAppBrowser的显示方法:

dispatch_async(dispatch_get_main_queue(), ^{ 
    if (weakSelf.inAppBrowserViewController != nil) { 
     //[weakSelf.viewController presentViewController:nav animated:YES completion:nil]; 
     self.inAppBrowserViewController.view.frame = CGRectMake(0,20,self.inAppBrowserViewController.view.frame.size.width,self.inAppBrowserViewController.view.frame.size.height-20);    
     [self.viewController.view addSubview:self.inAppBrowserViewController.view]; 
    } 
}); 

只需删除注释行并添加2以下的注释行。在CDVInAppBrowser的close方法必须添加:

UIView *lastView; 
for(UIView *subview in [self.viewController.view subviews]) { 
    lastView = subview; 
} 
[lastView removeFromSuperview]; 

[self.inAppBrowserViewController close];之前。
完成后,相机现在在inappbrowser顶部打开并将图像传递给它。

p.si:记住删除并添加ios平台以应用更改

相关问题