多个警报视图 - 删除另一个警报视图后面的警报视图

Posted

技术标签:

【中文标题】多个警报视图 - 删除另一个警报视图后面的警报视图【英文标题】:Multiple AlertViews - Remove the alertview that is behind another alertview 【发布时间】:2011-03-03 23:50:09 【问题描述】:

我认为这种情况应该很奇怪,但我坚持不懈。

我有一个视图,可以说是 View1,它将显示一个或多个警报视图。如果未触及警报,则警报将堆叠在一起。 问题来了。 如果我单击最顶部的警报,它应该带我进入一个全新的视图,比如说 View2。它确实如此。现在我得到了 View2 中仍然显示的剩余警报。我不希望这种情况发生。如何自动关闭从 View1 创建的当前正在 View2 中显示的待处理警报?

任何帮助或任何想法都非常感谢..

谢谢

【问题讨论】:

【参考方案1】:

试试这个,

    UIAlertView *autoAlertView = [[UIAlertView alloc] initWithTitle:@"Auto-dismissed Alert" message:@"This alert will be dismissed in 5 seconds." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [self performSelector:@selector(dismissAlert:) withObject:autoAlertView afterDelay:5];
    [autoAlertView show];
    [autoAlertView release];

-(void)dismissAlert:(UIAlertView *)alert 
    [alert dismissWithClickedButtonIndex:0 animated:YES];

【讨论】:

【参考方案2】:

不是您想要的问题的答案,但是...

为什么会有这么多警报?听起来你可能过度使用它们。 Apple 在其人机界面指南中非常清楚您应该如何使用 UIAlerts:

避免创建不必要的警报。

这些警报通常是不必要的 如果他们:

只是增加某些信息的可见性,尤其是 相关的信息 您的标准功能 申请。

相反,您应该设计一个 引人注目的展示方式 与您相协调的信息 应用的风格。

向用户更新正常进行的任务。

相反,请考虑使用进度 查看或活动指示器 提供与进度相关的反馈 用户(这些反馈方法是 在“进度视图”中描述和 “活动指示器”)。

要求确认用户启动的操作。

要获得操作的确认, 用户发起的,甚至是潜在的 有风险的操作,例如删除 联系,你应该使用一个动作 表。

告知用户他们无能为力的错误或问题。

虽然可能需要使用 告诉用户一个警报 他们无法解决的关键问题,这是 更好地整合这些信息 进入 UI,如果可能的话。例如, 而不是每次都告诉用户 服务器连接失败,显示 最后一次成功的时间 连接。

如果您过度使用警报:不要。那么你最初的问题可能会变得没有意义。

【讨论】:

我非常了解 HIG.. 我正在开发一个聊天应用程序...我通过 alertview 处理多个用户的聊天,这就是问题所在。无论如何,非常感谢您的回答\ 嗯,好的,谢谢。对我来说,听起来你确实在不应该使用 UIAlerts ——它们应该用于重要的东西,而不是呈现一般的 UI 东西。 如果您过度使用警报,Apple 很可能会拒绝您的应用程序。你真的需要认真对待他们的 HIG 东西。【参考方案3】:

您可以使用以下方式以编程方式关闭其他 UIAlertView:

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

您需要在创建时存储对它们的引用才能执行此操作。

【讨论】:

【参考方案4】:

谢谢各位!我为UIAlertView 编写了自己的替代品。我将半透明的UIViewframe (0, 0, 320, 480) 放在一起以避免用户交互,而我的自定义警报仍然显示“请稍候”,并且在此背景视图上方我将这个自定义警报放在UIViewUIActivityIndicatorView 中,这只是基本的UIActivityIndicatorView就在上面

附:不要因为我的英语而评判我,我是俄罗斯人

【讨论】:

这如何回答这个问题?

以上是关于多个警报视图 - 删除另一个警报视图后面的警报视图的主要内容,如果未能解决你的问题,请参考以下文章

当多个警报视图出现在同一个视图控制器中时,有没有办法交错?

Swift:从视图到警报视图或到另一个视图的语音转换

无法使用警报操作定向到另一个视图控制器

当另一个警报出现时,警报视图关闭

一个视图中的多个警报只能在 swiftui 中始终使用最后一个警报

无法使用警报操作定向到另一个视图控制器