話:
アプリがバックグラウンドになったときに UIActionSheet をプログラムで閉じる必要があり、iOS 7 で行ったこと[UIApplication sharedApplication].windows
は、タイプが であるビューをトラバーサルして見つけてから閉じるUIActionSheet
ことです。iOS 8 では動作しません。
バックグラウンド:
iOS 8 では、UIAlertController
アラートまたはアクション シートを表示するために使用する必要があります。ちょっとした実験では、以下UIActionSheet
を使用して内部的に実装されていることが示されていUIAlertController
ます。
po [[UIApplication sharedApplication] keyWindow] <_UIAlertControllerShimPresenterWindow:
po [[[UIApplication sharedApplication] keyWindow] rootViewController] <_UIAlertShimPresentingViewController: 0x7faa0cf049f0>
po [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentedViewController] <UIAlertController: 0x7faa0c8cb9e0>
正しいタイトル、メッセージなど。
錯乱:
次に、コントローラーを閉じるコードをいくつか追加しましたが、コントローラーは閉じられます。ただし、アプリはユーザーの操作に応答しなくなりました。閉じた後keyWindow
もまだ_UIAlertControllerShimPresenterWindow
であることがわかり、混乱しています。提示されたコントローラーを閉じてウィンドウをクリーンアップするべきではありませんか? それとも、アプリがバックグラウンドになったときに閉じられたため、ウィンドウ階層が正常な状態になく、めちゃくちゃになっているためですか?
誰か意見をいただけませんか?
ありがとう!