3

話:

アプリがバックグラウンドになったときに 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であることがわかり、混乱しています。提示されたコントローラーを閉じてウィンドウをクリーンアップするべきではありませんか? それとも、アプリがバックグラウンドになったときに閉じられたため、ウィンドウ階層が正常な状態になく、めちゃくちゃになっているためですか?

誰か意見をいただけませんか?

ありがとう!

4

1 に答える 1