1.普通警告框

IOS的SDK中提供了一个方便的类库UIAlertView,配合着不同参数来使用此类可以做出大多数的警告框,如下代码是IOS最简单的警告框。

  UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"你好" message:@"我是普通警告框" 
delegate:nil cancelButtonTitle:@"好的" otherButtonTitles: nil];
[alert show];

当警告框创建完成后,我们可以在想显示的地方调用show方法。但是,如果在调试过程中跑过这一步会发现,并不是“show”这行代码一跑,我们的警告框就显示出来,而是要继续走完剩余的代码,在当前消息循环结束后,次警告框才会自动弹出。

注:所谓的当前消息循环结束,可以理解为:流程全部跑完,比如函数一直跑,跑到函数尾部返回外面一层函数,再继续跑返回更外面一层当此类推,直到跑到最外面那层的函数的尾部,下一步就出了最外面那层函数,随后程序控制权交给当前消息循环。如果是主线程,则仍然不停循环等候新消息,如果是子线程,则此子线程结束。

对于UIAlertView的界面来说,一般无论点击任何按钮,此警告框就会消失。

如果想知道是按下哪一个按钮的话,需要添加警告框的代理回调方法:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
id alertbutton = [alertView buttonTitleAtIndex:buttonIndex];
NSLog(@"按下了[%@]按钮",alertbutton);
}

通过此代理方法,开发者能明确直到那个警告框的那个按钮被点击了。

最多可以有5个按钮,更多的话界面会有异常情况发生。运行结果如下:

2.无按钮警告框

利用警告框的模态特性,来模拟一些屏蔽用户操作的现象。

我们下面做一个警告框,在上面去掉所有元素,增加一个转动的进度圈来表明任务正在执行,这样就能达到我们的目的了,代码如下。

-(void)showNoButtonAlert
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"请稍等" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; [alert show]; alert.backgroundColor = [UIColor blackColor];
//无敌风火轮
UIActivityIndicatorView *actIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
//CGRect alertbounds=alert.bounds; //位置设置好
actIndicator.frame=CGRectMake(, , , );
actIndicator.center = CGPointMake(CGRectGetWidth(alert.bounds)/, CGRectGetHeight(alert.bounds)-40.0f); //动起来
[actIndicator startAnimating];
[alert addSubview:actIndicator]; //过三秒消失
[self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:3.0f];
} -(void)dismissAlert:(UIAlertView *)aAlertView
{
if(aAlertView)
{
//警告框消失
[aAlertView dismissWithClickedButtonIndex: animated:YES];
}
}

3.显示文本输入框的警告框(登陆框)

在警告框上显示一个文本输入框表明用户的输入区域,文本框下面则是提供两个按钮:确认和取消。具体代码如下:

-(void)showTextInputAlert
{
UITextField *txtField=nil;
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"你好" message:@"请输入新题目:\n\n\n\n" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; //显示之前配置txtField
txtField = [alert textFieldAtIndex:];
if(txtField)
{
txtField.placeholder=@"请输入用户名";
txtField.clearButtonMode = UITextFieldViewModeWhileEditing;
} txtField = [alert textFieldAtIndex:];
if(txtField)
{
txtField.placeholder =@"请输入密码";
txtField.clearButtonMode = UITextFieldViewModeWhileEditing;
}
//alert.tag=kalertTextInputType;
[alert show]; NSLog(@"%@",txtField.text);
} -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
id clickButton=[alertView buttonTitleAtIndex:buttonIndex];
NSLog(@"按下了%@按钮",clickButton);
id tmp=nil;
}

显示效果如下:其根据alert.alertViewStyle不同,显示的也不同

IOS 警告框 (UIAlertView)的使用方法的更多相关文章

  1. iOS警告框和操作表

    应用如何与用户交流呢? 警告框(AlertView)和操作表(ActionSheet)就是为此而设计的. 本文案例的原型草图如图3-48所示,其中有两个按钮“Test警告框”和“Test操作表”,点击 ...

  2. Bootstrap历练实例:警告框(Alert)插件的方法

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  3. mvc后台可以使前台弹出警告框的几种方法

    1,引用博主的 第一种方案:在jsp页面使用java代码实现. 后台处理代码:(把要提示的数据放到session中.) String message = ""; message = ...

  4. IOS UIAlertView(警告框)方法总结

    转自:my.oschina.net/u/2340880/blog/408873?p=1 IOS中UIAlertView(警告框)常用方法总结 一.初始化方法 - (instancetype)initW ...

  5. iOS:提示框(警告框)控件UIAlertView的详解

    提示框(警告框)控件:UIAlertView   功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.   类型:typedef NS_ENUM(NSInte ...

  6. IOS中UIAlertView(警告框)常用方法总结

    一.初始化方法 - (instancetype)initWithTitle:(NSString *)title message:(NSString*)message delegate:(id /*&l ...

  7. Selenium 2自动化测试实战17(警告框处理)

    一.警告框处理 在WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,只需要使用switch_to_alert()方法定位到alert/confir ...

  8. iOS:提示框(警告框)控件UIActionSheet的详解

    提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView.   风格类型: ...

  9. iOS警告收录及科学快速的消除方法

    来自: http://www.cnblogs.com/dsxniubility/p/4757760.html iOS警告收录及科学快速的消除方法     前言:现在你维护的项目有多少警告?看着几百条警 ...

随机推荐

  1. Web数据库的UI框架 Evolutility

    Evolutility 这个框架通过一个XML文件的定义,能够为一个数据对象(数据库中的一张表)来自动生成List,View,Edit,Delete,Search,Advance Search等视图, ...

  2. 最新版SDWebImage的使用

    我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了.研究发现, ...

  3. YII与Ace Admin 的集成

    目录 一. 前言... 1 二.为什么要使用YII+ace. 1 三.新建YII模块... 1 四.如何修改模板... 3 五.注意的地方... 4 六.整合的不足之处... 4 一. 前言 yii- ...

  4. Anndroid 开发架构读书笔记

    市面上大部分应用不外乎就是颠过来倒过去地做以下这些事情: --------------- --------------- --------------- --------------- | | | | ...

  5. 使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写

    最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属 ...

  6. mysql 特殊语句

    1.获取下当前mysql的插件目录select @@plugin_dir 2.mysql移动文件 select load_file('文件路径') into dumpfile '导出路径' 3.des ...

  7. setFocus一定要写在setLayout设置的后面,否则不起作用——使用setFocusPolicy为控件设置不同的焦点策略:Tab焦点,Click焦点,Wheel焦点和没有焦点

    QLineEdit* pEditor = new QLineEdit(m_strText);    pEditor->resize(.......);    pEditor->move(. ...

  8. Thml 小插件8 天气插件定制

    网址:http://www.tianqi.com/plugin/

  9. oracle 配置监听

    LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521 ...

  10. 使用java API查询java类

    一.java API的下载地址 前面列举了常用的java类,但只是介绍了功能,具体详细的用法(比如要知道该类的属性和方法)要需要调用java的API(Application Program Inter ...