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. Android Intent的几种用法总结【转】

    Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料.都指定好后,只要调用startAc ...

  2. 核心基础以及Fragment与Activity传递数据完整示例

    MainActivity如下: package cc.testsimplefragment0; import android.os.Bundle; import android.app.Activit ...

  3. HTML系列(九):表单

    一.表单标签form 表单标签用于申明表单,定义采集数据的范围,即<form>包含的数据将被提交到数据库上,包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单能够包 ...

  4. Nio Client

    public class NIOClient { static int SIZE = 2; final static int bufferSize = 500 * 1024; static InetS ...

  5. 巧妙实现缺角radiogroup控制多个fragment切换和滑动

    在android开发中,用一个radiogroup控制多个fragment切换是十分常见的需求.但是如果fragment是一个ListView,如何保证滑动的时候通过缺角可以看到下面的listview ...

  6. 获取新浪天气api显示天气情况(转)

    直接上一个html的demo <!doctype html> <html class="no-js fixed-layout"> <head> ...

  7. 走进C标准库(6)——"string.h"中函数的实现memchr

    我写的memchr: void *memchr(const void *buf, char ch, unsigned count){ unsigned ; while(*(buf++) != ch & ...

  8. maven打包成第三方jar包且把pom依赖包打入进来

    <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId& ...

  9. 【Delphi内联汇编学习1】Delphi与汇编

    我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式 ...

  10. Android面试笔试集锦

    前19题为常考题目 1. Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各 ...