我目前正在开发与Cordova的混合应用程序。该项目主要是外部网站的webview(使用Cordova inappbrowser插件实现)。在这个网站上,我希望用户能够使用他们的设备相机拍照并在网站上使用它。在Android上,我拦截了“loadstart”事件并为特定网址启动了相机插件,该工具就像我想要的那样工作。但是在iOS上,相机无法启动,我在XCode中收到警告Warning: Attempt to present <CDVCameraPicker: 0xXXXXXXXXX> on <MainViewController: 0xXXX> whose view is not in the window hierarchy!
经过一些研究后我发现,这是inappbrowser的预期行为。关闭inappbrowser以启动相机并再次打开inappbrowser对我来说是不可取的。
问题1:是否可以将相机显示在不适当的上方?
到目前为止,我的工作方法是使用<input type="file" accept="image/*" capture="camera">
,它有效(有点)。它打开一个对话框,用户可以在“拍照”和“选择文件”之间进行选择,如果他选择“拍照”相机打开,我可以将图片带到网站。
问题2:我可以绕过此选择对话框并在单击按钮时直接进入相机吗?
我知道两个修改都有发生在原生iOS代码中(我从未使用过)。
任何帮助将不胜感激,谢谢为您的时间。
相关问题:< / p>
的更新
似乎打破相机的电话是:
__weak CDVCamera* weakSelf = self;
...
[weakSelf.viewController presentViewController:cameraPicker animated:YES completion:^{
weakSelf.hasPendingOperation = NO;
}];
问题:如何在inappbrowser插件上显示相机?
我试图获取rootViewController,但它不起作用:
[[[[UIApplication sharedApplication] delegate] window] rootViewController]