iOSでMPMoviePlayerControllerを使用しています。私はビデオを再生中に発生する可能性のあるエラーを聞いています。私のエラーハンドラでは、私はUIAlertViewをポップアップします。時にはエラーが互いに連続して起こり、複数のアラートボックスが積み重なることがあります。より良いユーザーエクスペリエンスのために、以前のものがまだ表示されている場合は、別のアラートをポップアップ表示しないことをおすすめします。複数のUIAlertViewが積み重なるのを防ぐにはどうすればいいですか?
答えて
はこれを試してください:あなたは警告をポップアップ表示するとき
がtrue
にブール値を設定し、アラートを閉じたときfalse
にそれを設定し、常にあなたがイベントをポップアップする前に、それはtrue
だかどうかを確認するためにブール値をチェックしてください。 true
の場合は、すでに表示されている警告ウィンドウが表示されます。
あなたはこれを自明に実装できます。アラートを表示しているので、アラートの代理人でもあるので、アラートが表示されたときにブール値フラグを設定するだけで、アラートが表示されているかどうかを簡単に追跡できます。このようにしてブール値が設定されている場合は、それ以降のアラートを取り消すことができます。
時にはシステムアラートがポップアップし、奇妙な動作を引き起こすことがあります: – powerj1984
私が知る限り、唯一の方法は、アラートが現在表示されているかどうか、および/または現在アプリケーション内で却下されているかどうかを追跡することです。 appDelegateでアラートを表示してから、アラートが閉じられるたびに通知を使用してappDelegateに通知してください。このようにして、appDelegateはbooleanフラグ変数を持つ警告があるかどうかを追跡します。
アラートが表示されると_UIAlertOverlayWindowに移動します。したがって、かなり壊れやすい方法は、すべてのウィンドウを繰り返し、UIAlertViewサブビューがあるかどうかを確認することです。
-(BOOL)checkAlertViewVisibleStatus
{
for (UIWindow* window in [UIApplication sharedApplication].windows)
{
NSArray* subviews = window.subviews;
if ([subviews count] > 0)
if ([[subviews objectAtIndex:0] isKindOfClass:[UIAlertView class]])
return YES;
}
return NO;
}
これは、Appleがこれについて不平を言うことはできませんが、内部の表示階層に依存しているため、これは文書化されていません。より信頼性が、さらに多くの文書化されていない方法は `
[_UIAlertManager visibleAlert]
` nilであるかどうかを確認することです。
これらのメソッドは、SpringBoardからのUIAlertViewが表示されているかどうかを確認できません。
新しいUIAlertViewControllerを使用してください。別のビューが表示されている間にアラートを表示しようとすると、それを無視して次の警告が出力されます。積み重ねられたアラートの伝統的な振る舞いを欲しがっている人にとっては厄介な副作用ですが、あなたのケースでは良い解決策です。
Warning: Attempt to present <UIAlertController: 0x7f9ef34c17e0> on <MasterViewController: 0x7f9ef344ec90> which is already presenting (null)
それは動作するはずです:
-(BOOL) doesAlertViewExist
{
if ([[UIApplication sharedApplication].keyWindow isMemberOfClass:[UIWindow class]])
{
return NO;//AlertView does not exist on current window
}
return YES;//AlertView exist on current window
}
- 1. JavaFXテストプロジェクトで重複を防ぐにはどうすればいいですか
- 2. ItemCountの重複を防ぐにはどうすればよいですか?
- 3. 複数のウィンドウを防ぐにはどうすればいいですか?
- 4. ブートストラップのNavbarボタンが積み重なるのを防ぐ方法
- 5. CodeIgniterフォームの検証でコードの重複を防ぐにはどうすればいいですか?
- 6. SQL - 特定の条件で重複を防ぐにはどうすればいいですか?
- 7. ConcurrentModificationExceptionを防ぐにはどうすればいいですか?
- 8. タイムアウトを防ぐにはどうすればいいですか
- 9. 重複するHTML IDを防ぐにはどうすればいいですか?
- 10. データベーステーブルにデータをアップロードして重複するエントリを防ぐにはどうすればよいですか?
- 11. PHPで重複したフォーム提出を防ぐにはどうすればいいですか?
- 12. AngularJSのアンカータグを複数回クリックするのを防ぐにはどうすればいいですか?
- 13. 汎用クラスの生成コードの重複を防ぐにはどうすればよいですか?
- 14. メディアクエリ内でCSSコードの重複を防ぐにはどうすればよいですか?
- 15. バニラジャバスクリプトのイベントリスナーで重複を防ぐにはどうすればよいですか?
- 16. 複数のイオンアラートの積み重ねを防止する
- 17. C#を使用して、テキストブロックの重複を防ぐにはどうすればよいですか?
- 18. nodejsによる重複要求を防ぐにはどうすればよいですか?
- 19. Google Earth API、目印の重複を防ぐにはどうすればよいですか?
- 20. 複数回実行している春のアプリを防ぐにはどうすればよいですか?
- 21. オンライン匿名アンケートで重複を防ぐにはどうすればよいですか?
- 22. 複数の列に貼り付けるのを防ぐにはどうすればよいですか?
- 23. カメラのスナップで複数のアクティビティを積み重ねないようにする
- 24. 私のウェブページのprintscreenを防ぐにはどうすればいいですか?
- 25. JavaScriptが関数のパラメータを評価するのを防ぐにはどうすればいいですか?
- 26. 最後の数値が配列をオーバーライドするのを防ぐにはどうすればいいですか?
- 27. WordPress用スライドショーのテキストの重なりを防ぐにはどうすればよいですか?
- 28. デバイスドライバのインストールを防ぐにはどうすればいいですか?
- 29. Safari Mobile(iPad)のスクロールラグを防ぐにはどうすればいいですか?
- 30. ラベルコントロール内のボタンクリックを防ぐにはどうすればいいですか?
を絶対にありません。あなたが貼り付けたコードは、SPIを使用するのと同じくらい悪いですが、おそらくあなたが拒否されることはありませんが(あなたが行っているようなサブビューを見つけるのは難しいので)、それは正当に*あなたがアプリから拒否されるべきものです格納。また、UIAlertViewがどのように動作し、OSアップデートで破損する可能性があるかについても仮定しています。 –
ありがとう、私は私の答えのその部分を削除しました。 – mopsled