2016-05-13 10 views
0

私はcordova 6.0.0を使用してハイブリッドモバイルアプリケーションを開発しています。inappbrowserから開くときに、Cordova IOSカメラのプラグインが動作しない

私の要件によると、Webビューで動的URLを開く必要があります。 urlはapiの応答によって提供されます。

私はウェブブラウザのプラグインでコードブラウザを使用しています。

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

ユーザーがWebビューで開いたページ内の任意のリンクをクリックしたときに今、私は、そのクリックイベントをキャッチし、クリックしたどのユーザーにアンカータグのhrefの値を見つける必要があります。

ターゲットURLが自分の条件と一致する場合は、写真を正常に撮影した後でもウェブビューの状態を維持できるように、ウェブビューを閉じずにカメラを開く必要があります。

カメラ機能については、私はcordovaのデフォルトカメラプラグインを使用しています。

私はこれをAndroidで成功させました。

IOSの場合、私はカメラを開くことができません。私がチェックしてきたように制御がカメラプラグイン内部で起こっているが、それは私がこれに関する多くの記事をチェックして、いくつかの人々は、インラインフレームの代わりに、Webビューを使用することを示唆している。警告

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

の下に与えていますしかし、動的に読み込まれたIframeではclickイベントを捕捉できません。

誰かがこれに対する解決策になるよう助けてもらえますか?私の要求に従ってこれを行う方法はありますか?事前

+0

同じ警告があります。 jQueryのクリックイベントハンドラからnavigator.cameraを呼び出そうとしています。 – tfmontague

答えて

0

おかげで私は最近、同じ問題を抱えていたし、それを解決するために管理しました。 InaAppBrowserをサブビューとして開いて、その上にカメラを表示する必要があります。すべての変更は、InAppBrowserプラグインの場合はCDVInAppBrowser.mで行われます。

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のshowメソッドを変更する必要があります。

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

[self.inAppBrowserViewController close];前:CDVInAppBrowserのcloseメソッドでは、追加する必要があります。
完了すると、カメラはインアプリブラウザの上に開き、画像をそのカメラに渡します。

p .:変更を適用するためにiosプラットフォームを削除して追加することを忘れないでください。

関連する問題