2010-03-02 53 views
1

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

我的第一个猜测是某种形式的视图,但我看到它们的尺寸较小并且以主视图为中心。这仍然可能是一个自定义的视图?是否有任何这样的情况下,自定义视图模式显示,并要求继续之前解雇或确认?

一如既往,在此先感谢您的任何信息。

地球...

回答

0

没有任何例子,很难说具体是什么使用。但是,在大多数情况下,UIActionSheet用于这种自定义对话框。

Class Reference

0

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

1

为了创建这是模态的一个自定义提醒,可以做到以下几点:

有两个子视图中创建一个UIView。其中一个sub-UIViews覆盖了整个窗口(例如,尺寸为320x480),并带有一个调整后的alpha值,以使其显示在其下的内容变暗。兄弟子视图是您的Alert的容器,应该在最前面。

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

当所有的视图被配置和叠合出,作为子视图添加顶视图为类似于[[UIApplication的sharedApplication] keyWindow]

[[[UIApplication sharedApplication]keyWindow] addSubview:myCustomAlertView]; 

注:原因,其中一个变暗同级的观点并阻碍UI事件是我非常确定,如果你降低超级视图的alpha,那么子视图将继承该属性。至少我记得过去曾经处理过这个问题。如果错误,我会立即纠正。

- 我创建了一个自定义的警报类,虽然此时不是模态,但会在几秒钟后自动关闭,或者在接收到touchUpInside事件的超时之前自动关闭。这只是一个响应点击的UIView。我发现在我的应用程序中有几个区域想要显示一条简短消息,但不喜欢必须始终点击“确定”按钮才能继续前进。有了这门课程,即使在警报自动隐藏之前,我仍然可以继续进行其他活动,或者仍然只是轻点失去它。

+0

想要分享您的代码...? – 2010-12-04 14:28:24

2

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

但是,在使用非标准警报视图时要小心。为您提供的那些设计是一致的,以便他们的用户在iPhone OS上拥有统一的体验。如果你构建的是与操作系统其他部分不同的东西,那么当人们使用你的应用程序时,这可能会导致沮丧。

+0

+1,感谢分享代码 – 2011-11-09 15:18:54