0

我有一个包含登录会话的应用程序。当应用程序暂停时(iOS 4),我保存当前时间,如果下一次应用程序变为活动状态是在暂停时间后 15 分钟内,我希望它恢复。否则我希望它返回登录屏幕,因为会话已过期。

这是我现在正在编写的实现它的内容:

在应用程序委托的 applicationDidBecomeActive 中,我检查时间并在需要时显示登录屏幕(模态)。但是问题是,如果应用程序在暂停时显示 UIAlertView 或 UIActionSheet,当我显示登录屏幕时它不会自动关闭它。然后 UIAlertView 或 UIActionSheet 将出现在它根本不属于的登录屏幕上。我知道我可以注册每个 UIAlertView 和 UIActionSheet 以收听 applicationDidBecomeActive 并在需要时关闭,但由于我的应用程序中有很多它们,如果我可以避免这种情况真的很方便。

我想知道是否有一种方法可以关闭所有活动视图,即使以模态方式呈现另一个视图控制器,它也会保留在屏幕上。

或者是否有更好的方法来处理 iOS 4 中的会话超时?

4

1 回答 1

1

我想出了一种无需通知的方法(尽管通知并不像看起来那么困难):我向每个显示 UIAlertView 的类添加了一个 iVar,以保存当前显示的 AlertView。在 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)animatedor中- (void)dealloc(视情况而定)我添加了:

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

UIActionSheet 也可以这样做。希望这可以帮助。

如果您有更好的解决方案,请告诉我。

于 2010-11-28T11:29:22.597 回答