私のプロジェクトでInstagramを統合しているとき。 image
からUIImagePickerController
を取得しています。その後、Instagramに送信したいのですが、image
をInstagram by UIDocumentInteractionController
デリゲートメソッドpresentOptionsMenuFromRect:inView: animated:
このような
[documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];
警告が表示されます警告:プレゼンテーションの進行中に<_UIDocumentActivityViewController:0x7584780>を表示しようとしています!
アプリケーションはクラッシュしていません。しかし、私は問題を抱えていません。この警告が表示される理由とその意味。私はインターネットで検索し、これに関する質問を読みましたが、答えが得られませんでした。助けて !!
// Breaks
[viewController1 dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:viewController2 animated:YES completion:NULL];
// Does not break
[viewController1 dismissViewControllerAnimated:YES completion:^{
[self presentViewController:viewController2 animated:YES completion:NULL];
}];
上記のコードのSwift 3バージョンは次のようになります。
// Breaks
viewController1.dismiss(animated: true)
present(viewController2, animated: true)
// Does not break
viewController1.dismiss(animated: true) {
present(viewController2, animated: true)
}
上記の2番目の例の完了ハンドラーの使用に注意してください。
表示されるのはviewController2
後viewController1
は完全に却下されました。
Swift 3バージョン、ここにあります
viewController1.dismiss(animated: true, completion: {
self.present(self.viewController1, animated: true)
})
viewController1は、表示するviewcontrollerです。
最初のプレゼンテーションまたは却下が完了していない間に、UIImagePickerController
を提示または却下し、UIDocumentInteractionController
を提示しようとしていることを意味します。
前述したように、これは、2つのモーダルウィンドウまたはポップオーバーを同時に表示しようとしていることを意味します。しかし、私の場合、このメッセージを受け取ったときにモーダルウィンドウやポップオーバーは見ていません。
私の場合のエラーの理由は次のとおりです。ポップオーバーを初めて表示するために呼び出したとき、それはポップオーバーが表示されないようにする別のエラーでしたが、どういうわけか「表示済み」状態のままです。ポップオーバーを表示する次のすべての試行は、「プレゼンテーションの進行中!」というランタイムエラーで失敗しました。
したがって、同じ状況に陥った場合は、ログを調べて、*** WebKit discarded an uncaught exception in the...
で始まる最初のエラーを見つけてください。
それが誰かの時間を節約することを願っています。
既にイベントを送信しているボタンを貼り付けてコピーし、新しいボタンが新しいビューを開くことになっているため、別の接続を作成し続けたため、このメッセージが表示されました。
技術的には、同時に2つのビューを開こうとしていました。
やってみて.
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self performSegueWithIdentifier:@"Identifier" sender:self];
});
これは、同時に2つのViewControllerを表示していることを意味します。最初のプレゼンテーションが完了したら、デリゲートを呼び出します。
これは、ViewButtonを表示するためにIBActionに接続されたUIButtonを持っている場合にも発生する可能性があり、ボタンからターゲットViewControllerへのストーリーボードでセグエを作成します。
いくつかの相互作用をシフトしたときに、UIButtonからIBAction接続を削除するのを忘れたときに、これが発生していました。
IBAction接続またはセグエのいずれかを削除すると解決します。