iOS控件--------UIAlertController

苹果不断的推出一些新的方法去代替老的方法,而推出这些方法的主要思想就是"统一",也可以理解为把一些相似的功能整合到一个控件或者方法里面,下面要说的就是UIAlertController.

/

在iOS8 之后推出的UIAlertController其实就是对iOS8之前所用的两个控件UIActionSheetUIAlertView的整合,打开Xcode你会发现iOS8之后这两个方法都被弃用了,因为UIAlertController拥有了两个控件的所有功能.

下面就是代码测试

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // 危险操作:弹框提醒
    // iOS8 开始:UIAlertController 包含以上两个的功能
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"你有严重的病症" preferredStyle:UIAlertControllerStyleAlert];
    // 添加按钮
    __weak typeof (alert)temp = alert; // 防止block循环引用,导致alert控制器无法自动销毁
    [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // 获取文字
        NSString *text = [temp.textFields.firstObject text];
        NSString *text1 = [temp.textFields.lastObject text];
        NSLog(@"你想做的事情,第一个文本框的文字是: %@,第二个文本框的文字是: %@",text,text1);
    }]];
    
    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        
    }]];
    [alert addAction:[UIAlertAction actionWithTitle:@"其他" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        
    }]];
    
    /*
     UIAlertActionStyleDefault = 0, // 默认
     UIAlertActionStyleCancel,   // 取消类
     UIAlertActionStyleDestructive // 销毁性的按钮
     */
    
    // 添加文本框(只能在UIAlertControllerStyleAlert添加文本框)
    [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        // 可以通过设置textField的属性达到相应的效果
        textField.textColor = [UIColor redColor];
        // 监听文字改变
        // 以通知的方式监听文字改变的话要在点击确定|取消按钮的时候销毁通知,认不是用dealloc
//        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userChange:) name:UITextFieldTextDidChangeNotification object:textField];
        // UITextField 继承自UIControl
        [textField addTarget:self action:@selector(userChange:) forControlEvents:UIControlEventEditingChanged];
    }];
        /*
         // 通过以下属性可以看出,我们可以监听键盘弹出,和键盘隐藏
         UIControlEventEditingDidBegin  // 开始编辑
         UIControlEventEditingChanged   // 正在编辑
         UIControlEventEditingDidEnd    // 结束编辑
         UIControlEventEditingDidEndOnExit  // 退出编辑
         */
    [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.secureTextEntry = YES;
    }];
// 因为是控制器类型,所以:
    [self presentViewController:alert animated:YES completion:nil];
}
// 这样既可以监听文字的改变,又可以获取到改变的文字
- (void)userChange:(UITextField *)name
{
    NSLog(@"%@",name);
}

iOS控件--------UIAlertController_第1张图片
B9E2172A-010F-4E0E-B9D5-F86364E58D1C.png

你可能感兴趣的:(iOS控件--------UIAlertController)