iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)

http://www.cocoachina.com/bbs/read.php?tid-333153.html  

提示窗口Alert(UIAlertController)和底部弹出窗口AlertASheet的设计   

 
 
 
ios8之后,提示窗口和底部弹起窗口都是由UIAlertController一起控制的
类方法:+alertControllerWithTitle:message:preferredStyle:
         style:Alert  or   AlertSheet

参考:http://blog.csdn.net/liangliang103377/article/details/40078015


一、一个按钮的提示窗设计
UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"My Alert" message:@"This is an alert" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *defaultAction=[UIAlertAction actionWithTitle:@"OK" style:UIAlertStyleDefault handler:^(UIAlertAction *actoin){}];//在代码块中可以填写具体这个按钮执行的操作
[alert addAction:defaultAction];                                                                                                                                                             //代码块前的括号是代码块返回的数据类型
[self presentViewController: alert animated:YES completion:nil];


具体流程就是:创建小界面alert--->创建按钮以及对应动作action--->将按钮添加到界面上addAction--->显示界面presentViewController


同理有:
二、两个按钮的提示窗设计
NSString *title=NSLocalizeString(@"A short title is best!",nil);
NSString *message=NSLocalizeString(@"A message should be a short,complete sentence.",nil);//NSLocalizeString取本地库语言
NSString *cancelButtonTitle=NSLocalizeString(@"Cancel",nil);
NSString *otherButtonTitle=NSLocalizeString(@"OK",nil);


UIAlertController *alertController=[UIAlertController alertControllerWithTitle: title message:message preferredStyle:uiAlertControllerStyleAlert];//创建界面
UIAlertAction *cancelAction=[UIAlertActon actionWithTitle:cancelButtonTitle style:UIAlertStyleDefault handler:^(UIAlertAction *acton){}];//创建按钮cancel以及对应事件
UIAlertAction *otherAction=[UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertStyleDefault handler:^(UIAlertActoin *action){}];//创建按钮ok以及对应事件


//最后将这些按钮都添加到界面上去,显示界面
[alertController addAction:cancelAction];
[alertController addAction:otherAction];
[self presentViewController: alertController animated:YES completion:nil];




三、如果要在alert中添加输入框,可以加上如下代码:
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField)
{
    //在代码块中对文本框进行各种操作,如设置背景或者字体颜色,或是加上监控器,观察文本框输入的变化
    //可以实现输入定长的密码,或者是在不输入东西的时候ok按钮不能用等。。。
    [NSNotificationCenter defaultCenter] addObserver: self selector:@selector(handleTextFieldTextDidChangeNotification:) name:UITextFieldTextDidChange Notification object:textField];
    //如果是输入密码就设置为输入的值不可见
    textField.secureTextEntry=YES;
}]
然后就执行其他各种操作。。

当用户输入完毕,点击ok按钮,需要停止监视器:
UIAlertAction *otherAlertAction=[UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertStyleDefault handler:^(UIAction *action)
{

        [NSNotificationCenter defaultCenter removeObserver:self name:UITextFieldDidChangeNotification object:alertController.alertController.textFields.firstObject];
}];

五、在没有任何内容输入的时候,禁用ok按钮:
otherAction.enabled=NO;
sefl.secureTextAlertAction=otherAction;//只有在密码框有输入时才启用这个按钮
                                     //这段代码的具体位置见http://blog.csdn.net/liangliang103377/article/details/40078015

六、定义:当输入超过五个字符时,才启用ok键(self.secureTextAlertAction=YES)
-(void)handlerTextFieldTextDidChangeNotification:(NSNotification*) notification
{
    UITextField *textField=notification.object;
    self.secureTextAlertAction.enabled=textField.text.length>=5;
}

七、关于底部弹起的窗口,大致与Alert的创建一致,只是在类方法 +alertControllerWithTitle:message:preferredStyle:的style中选择为UIAlertControllerStyleAlertSheet
监视文本框,如果一改变textField的值就会调用某个方法:
[UITextField addTarget:self action:@selector(textFieldChanged:) forControlEvents: UIControlEventEditingChanged]; 
posted @ 2016-08-19 16:18  Ruby_c  阅读(831)  评论(0编辑  收藏  举报