iOS 对UIAlertController内的输入框进行输入监听,实时改变确定、取消按钮颜色


1、创建UIAlertController

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"新建" message:@"" preferredStyle:UIAlertControllerStyleAlert];

2、添加一个输入框 添加输入框文字改变监听

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(alertTextFieldDidChange:) name:UITextFieldTextDidChangeNotification object:textField];

        textField.placeholder = @"请输入全称";

    }];

3、在确定和取消按钮事件中相应的移除监听

UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

        [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];

    }];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

        UITextField * wordNameTextField = alertController.textFields.firstObject;//获取到textField

        [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];

    }];

    okAction.enabled = NO;//此处确定按钮在输入框内没有内容时置灰不可用

    [alertController addAction:cancleAction];

    [alertController addAction:okAction];

    [self presentViewController:alertController animated:YES completion:nil];

 

4、实现监听方法

- (void)alertTextFieldDidChange:(NSNotification *)notification{

    UIAlertController *alertController = (UIAlertController *)self.presentedViewController;

    if (alertController) {

        UITextField *wordNameTextField = alertController.textFields.firstObject;

        UIAlertAction *okAction = alertController.actions.lastObject;

        okAction.enabled = ![@"" isEqualToString:wordNameTextField.text];//输入框有内容时可用

    }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM