0

ログインセッションを含むアプリケーションがあります。アプリケーションが中断されたとき (iOS 4)、現在の時刻を保存し、次回アプリケーションがアクティブになった場合は、中断時間から 15 分以内に再開したいと考えています。それ以外の場合は、セッションの有効期限が切れているため、ログイン画面に戻りたいです。

これを実装するために私が今書いていることは次のとおりです。

アプリ デリゲートの applicationDidBecomeActive で、時間を確認し、必要に応じてログイン画面を (モーダルに) 表示します。ただし、問題は、中断時にアプリケーションが UIAlertView または UIActionSheet を表示していた場合、ログイン画面を表示しても自動的に閉じないことです。UIAlertView または UIActionSheet は、それがまったく属していないログイン画面に表示されます。各 UIAlertView と UIActionSheet を登録して applicationDidBecomeActive をリッスンし、必要に応じて閉じることができることはわかっていますが、アプリケーション全体にそれらの多くがあるため、それを回避できれば非常に便利です。

別のView Controllerがモーダルに表示されていても、アクティブなビューをすべて閉じる方法があるかどうか疑問に思っていました.

または、iOS 4 でセッション タイムアウトを処理するためのより良い方法があれば教えてください。

4

1 に答える 1

1

通知なしでこれを行う方法を見つけました (通知は見た目ほど難しくありませんが): 現在表示されている AlertView を保持するために、UIAlertView を表示する各クラスに iVar(s) を追加しました。AlertView の定義では:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle: ....
[alert show];
self.alertView = alert;
[alert release];

そして、AlertView が閉じられたときに iVar をクリーンアップします。

- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)index {
    // code goes here
    self.alertView = nil;
}

次に、- (void) viewWillDisappear:(BOOL)animatedまたは- (void)dealloc(状況に応じて)追加しました:

    [self.alertView dismissWithClickedButtonIndex:0 animated:YES];

UIActionSheet でも同じことができます。お役に立てれば。

より良い解決策があれば教えてください。

于 2010-11-28T11:29:22.597 に答える