一个更好的UIAlert对话框

时间:2010-03-02 16:21:56

标签: iphone xcode

我见过几个显示某种形式警报的应用程序,有时需要用户输入或显示某种类型的信息。无论如何,从“警报”的设计来看,我会假设他们正在使用别的东西来展示这些。

我的第一个猜测是某种形式的视图,但我发现它们的尺寸较小,并且在主视图中居中。这仍然可能是一个自定义视图吗?是否有任何示例,其中自定义视图以模态显示并需要在继续之前解雇或确认?

一如既往,提前感谢任何信息。

...地理位置

4 个答案:

答案 0 :(得分:2)

如果你想要一个真正的自定义UIAlertView替换,我创建了一个带有样式的UIView子类,如果UIAlertView作为Quartz绘图的演示,可以找到源代码here。唯一缺少的是警报视图的自定义按钮类型。

但是,请注意使用非标准警报视图。为您提供的设计旨在保持一致,以便用户在iPhone OS上拥有统一的体验。如果你构建的东西与操作系统的其他部分不同,那么当人们使用你的应用程序时,它可能会导致挫败感。

答案 1 :(得分:1)

要创建以模态方式执行的自定义提醒,您可以执行以下操作:

创建一个包含两个子视图的UIView。其中一个子UIViews覆盖整个窗口(例如,大小为320x480),具有调整后的alpha值,以便显示其下面的内容变暗。兄弟子视图是警报的容器,应该是最前面的。

忽略调光器视图中的事件,对警报容器视图中的点击或其他事件作出适当的响应。

当配置和布局所有视图后,将顶视图作为子视图添加到[[UIApplication sharedApplication] keyWindow]

之类的内容中
[[[UIApplication sharedApplication]keyWindow] addSubview:myCustomAlertView];

注意:兄弟视图在哪里被调暗并阻止UI事件的原因是我很确定如果你降低超视图的alpha值,子视图会继承该属性。至少我记得过去曾处理过这个问题。如果错的话,我会立即纠正。

- 我创建了一个自定义警报类,虽然目前不是模态,但会在几秒钟后自动解除,或者在收到touchUpInside事件后超时之前解除。它只是一个响应水龙头的UIView。我发现在我的应用程序中有几个区域我想要显示一条简短的消息,但是不喜欢必须始终点击“确定”按钮继续前进。通过这门课程,我甚至可以在警报自动隐藏之前继续进行其他活动,或者只是点击以快速丢失它。

答案 2 :(得分:0)

没有任何例子,很难确切地说出正在使用的是什么。但是,在大多数情况下,UIActionSheet用于此类自定义对话框。

Class Reference

答案 3 :(得分:0)

通常人们使用UIAlertView,他们只是在消息字段中添加了一堆换行符。根据换行符数,这将为您提供所需的高度。然后他们通过调用addSubview:viewToAdd添加任何其他视图。我知道这是一种痛苦和“黑客”,但它已成为人们常用的方法。 Here is a forum post on the topic which illustrates how to do it.