2016-03-14 16 views
6

ではありません。UIImagePickerController&ビューは、私は、単純なスウィフトプロジェクトを持っているウィンドウ階層

のViewController Bはここで、基本的にちょうどWKWebViewありますそのviewDidLoad():のViewController Bが提示されたときに

let contentController = WKUserContentController(); 
contentController.addScriptMessageHandler(
    self, 
    name: "eventHandler" 
) 

let config = WKWebViewConfiguration() 
config.userContentController = contentController 

webView = WKWebView(frame: CGRectZero, configuration: config) 
webView.navigationDelegate = self 
webView.allowsBackForwardNavigationGestures = false 
view = webView 

だから、私は基本的には画面全体でWebブラウザを持っています。

私はに実行している問題は、(Webページの中に)ユーザーがクリックすると、「ファイルのアップロード/ピッカーファイル」、ということで、最初に私がこの参照:型公共の場で合格

を。アイテムがpublic.contentまたは public.dataに準拠していません。新しいタイプをエクスポートする場合は、 が適切な親タイプに準拠していることを確認してください。 UICollectionViewFlowLayoutの動作は定義されていません。アイテムの幅が で、UICollectionViewの幅からセクション の左右の値を差し引いて、コンテンツの左右差を差し引いた値よりも小さくする必要があるからです。 値。

関連UICollectionViewFlowLayoutインスタンスが < _UIAlertControllerCollectionViewFlowLayoutある:0x12e30f270>、それが に取り付けられています。 アニメーション= {bounds.origin =; bounds.size =; 位置=; };層=; contentOffset:{0、0}; contentSize:{0、0}>コレクション ビューのレイアウト:< _UIAlertControllerCollectionViewFlowLayout: 0x12e30f270>。

その後、ユーザーはiOSのオプションリストから、または「フォトライブラリ」「写真やビデオを撮る」を選択した場合、私はこれを取得:

警告:UIImagePickerControllerを提示しようとしています。 私の0x12d192200 .WebViewController:ビューがウィンドウ内にない0x12e2883e0 階層!

  1. フォトライブラリピッカー//カメラアプリは表示されません:

結果はということです。

  • ViewController Bは何らかの理由でアニメーション解除されます。
  • 誰にも提案はありますか?関連するコードを提供しようとしましたが、必要に応じてさらに貼り付けることができます。ありがとうございました。

    - UPDATE --------

    わかりましたので、より多くの研究の後、起こって二つの別々のもの、実際にあります。

    1. は、最初のエラーは、関数であります「ファイル・ピッカー」がモバイル・ブラウザによってどのように処理されるかを示します。 See here ...物事の壮大な計画ではなく、大したことではありません。

    2. 第2のエラーAttempt to present UIImagePickerController... - 2つの弱体化するほど醜いです。

    WKWebViewとのViewControllerは、その後、(ライブラリまたはカメラから)画像を「選択」しようとするユーザーにより、iOSのはUIImagePicker を提示しようとしますのViewControllerから提示された場合 WKWebView ViewControllerから、あなたが望むものです。

    残念ながら、私がまだわからない理由で、画像を「選択」しようとするユーザの行為によって、iOSは提示されたビューコントローラを却下します...この場合、あなたのWKWebViewコントローラ:(したがって、WKWebView ViewControllerは終了するので、UIImagePickerを表示しようとするとウインドウ階層にはありません - したがって、エラー。

    私の解決策はかなりハッキーですが、特定の使用の場合)、次のようである。私はこれが誰かの役に立てば幸い:

    1. はWKWebViewのViewController(のViewControllerをインスタンス化
    2. VC A

    を閉じB)

  • のViewController Aからアプリのルートビューコントローラ
  • 現在VC BとしてVC Bを設定します。これは、本質的にそれを作りますWKWebViewは、問題を回避して解雇することはできません。あなたはviewDidLoad(){}機能にint型をしている場合は

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc = storyboard.instantiateViewControllerWithIdentifier("Browser") as! WebViewController 
    UIApplication.sharedApplication().keyWindow?.rootViewController = vc 
    
    self.presentViewController(vc, animated: false, completion: {() -> Void in 
        self.dismissViewControllerAnimated(false, completion: nil) 
    }) 
    
  • +0

    私は今のところ同じ状況です。最初の問題に関して:それはシミュレータにのみ現れますが、実際のデバイスには現れません。 2番目の問題は、https://stackoverflow.com/questions/37380333 – Jurasic

    答えて

    0

    現在、そしてオーバーライドviewDidAppear(animated: Bool) {}にコードを移動しようと、私は今日、同じ問題を抱えていたし、それを修正しました。

    +0

    からの解決策によって解決されました。私は同じ問題を抱えていますが、この解決策は私のために修正されていません。 –

    関連する問題