多个警报视图 - 删除另一个警报视图后面的警报视图
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
编写了自己的替代品。我将半透明的UIView
与frame (0, 0, 320, 480)
放在一起以避免用户交互,而我的自定义警报仍然显示“请稍候”,并且在此背景视图上方我将这个自定义警报放在UIView
和UIActivityIndicatorView
中,这只是基本的UIActivityIndicatorView
就在上面
附:不要因为我的英语而评判我,我是俄罗斯人
【讨论】:
这如何回答这个问题?以上是关于多个警报视图 - 删除另一个警报视图后面的警报视图的主要内容,如果未能解决你的问题,请参考以下文章