3

私が取り組んでいるアプリには、アプリが非アクティブ/バックグラウンド状態になったときに閉じたいアクション シートとアラート ビューがあります。

コードを 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 を閉じることに関して、同様の非常に優れた詳細なソリューションを見てきましたが、この問題をカバーしていないようです。どんな助けでも大歓迎です。

4

1 に答える 1

2

表示されているかどうかを確認する必要があるのはなぜですか?実際、なぜ nil に対してチェックする必要があるのでしょうか? [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];アクションシートが存在する場合はそれを却下し、存在しない場合は何もしないnilでメソッドを呼び出すだけで、うまく動作するはずです。

于 2010-08-14T01:53:59.413 に答える