2016-05-13 115 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平臺以應用更改

相關問題