Iphone 更好的UIAlert对话框

Iphone 更好的UIAlert对话框,iphone,xcode,Iphone,Xcode,我见过一些应用程序显示某种形式的警报,有时需要用户输入或显示某种类型的信息。无论如何,从“警报”的设计来看,我认为他们正在使用其他东西来显示这些 我的第一个猜测是某种形式的视图,但我看到它们的大小较小,并且位于主视图的中心。这可能还是一个自定义视图吗?在这种情况下,是否有任何示例显示自定义视图,并且在继续之前需要取消或确认 一如既往,提前感谢您提供的任何信息 Geo…如果没有任何例子,很难说到底使用了什么。但是,在大多数情况下,UIActionSheet用于此类自定义对话框 .通常,人们使用的是

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

我的第一个猜测是某种形式的视图,但我看到它们的大小较小,并且位于主视图的中心。这可能还是一个自定义视图吗?在这种情况下,是否有任何示例显示自定义视图,并且在继续之前需要取消或确认

一如既往,提前感谢您提供的任何信息


Geo…

如果没有任何例子,很难说到底使用了什么。但是,在大多数情况下,
UIActionSheet
用于此类自定义对话框


.

通常,人们使用的是
UIAlertView
,他们只是在消息字段中添加了一堆新行。这将根据换行符的大小为您提供所需的高度。然后,他们通过调用
addSubview:viewToAdd
添加任何其他视图。我知道这是一种痛苦和“黑客”,但它已经成为人们做这件事的一种相当普遍的方法

要创建一个以模式运行的自定义警报,您可以执行以下操作:

创建一个包含两个子视图的UIView。其中一个子UI视图覆盖了整个窗口(例如大小为320x480),并调整了alpha值,以使其下的内容显示为灰色。同级子视图是警报的容器,应该位于最前面

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

配置并布局所有视图后,将俯视图作为子视图添加到类似[[UIApplication sharedApplication]keyWindow]的内容中

[[[UIApplication sharedApplication]keyWindow] addSubview:myCustomAlertView];
注意:同级视图中的一个变暗并阻止UI事件的原因是我非常确定,如果降低superview的alpha,子视图将继承该属性。至少我记得过去曾处理过这个问题。如果我错了,我会改正的

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

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

但是,在使用非标准警报视图时要小心。为您提供的服务旨在保持一致性,以便用户在iPhone操作系统中获得统一的体验。如果您构建的东西与操作系统的其他部分不同,那么当人们使用您的应用程序时,可能会导致挫折感