私が取り組んでいるアプリには、アプリが非アクティブ/バックグラウンド状態になったときに閉じたいアクション シートとアラート ビューがあります。
コードを iOS3.2 と互換性を持たせたいので、UIApplicationDidEnterBackgroundNotification の代わりに UIApplicationWillResignActiveNotification を使用しています。
-(void)applicationWillResignActive:(Notification *)notification{
if (self.actionSheet && self.actionSheet.visible){
NSLog(@" actionSheet is Visible");
[self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];
}
}
これをシミュレーター (iphone 3.2、iOS4) でテストし、actionSheet を表示してホーム ボタンを押しますが、「actionSheet is Visible」というメッセージが表示されません。しかし、アプリを再度開いてホームボタンで閉じると、「actionSheet is Visible」というメッセージが表示されます。
これは、初めて actionSheet の visible プロパティが設定されていないことを示しています。プロパティの設定に遅延が発生する可能性はありますか? 実はactionSheetを表示するメソッドにメッセージを入れています
[self.actionSheet showInView:self.parentViewController.tabBarController.view];
if (self.actionSheet.Visible) NsLog(@" action Sheet visible");
ここでもメッセージが表示されません。可視プロパティはいつどこで設定されますか? アクションシートを却下しようとして根本的に間違ったことをしていますか? SO で alertViews を閉じることに関して、同様の非常に優れた詳細なソリューションを見てきましたが、この問題をカバーしていないようです。どんな助けでも大歓迎です。