美文网首页iOS 深度好文
使用UIAlertController实现带输入框的alertV

使用UIAlertController实现带输入框的alertV

作者: 伯牙呀 | 来源:发表于2017-06-23 14:36 被阅读435次
    UIAlertController设置按钮动态可用
    // 定义全局变量
    UITextField *textField1;
    UITextField *textField2;
    
    UIAlertAction *cancelAction;
    UIAlertAction *okAction;
    
    - (void)showAlertController {
        
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"message" preferredStyle:UIAlertControllerStyleAlert];
        
        cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
            NSLog(@"点击了Cancel");
        }];
        
        okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            NSLog(@"点击了OK");
        }];
        
        [alertController addAction:okAction];
        [alertController addAction:cancelAction];
        
        // 添加文本框(只能添加到UIAlertControllerStyleAlert的样式,如果是preferredStyle:UIAlertControllerStyleActionSheet则会崩溃)
        [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
            
            textField.placeholder = @"Login";
            
            // 监听文字改变的方法,也可以通过通知
            [textField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
            
    //        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];
    
            textField1 = textField;
        }];
        
        [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
            
            textField.secureTextEntry = YES;  // 密文形式显示
            textField.placeholder = @"Password";
            
            // 监听文字改变的方法
            [textField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
            
    //        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];
            
            textField2 = textField;
        }];
        
        
        if (textField1.text.length > 0 && textField2.text.length > 0) {
            okAction.enabled = YES;
        } else {
            okAction.enabled = NO;
        }
        
        
        [self presentViewController:alertController animated:YES completion:nil];
        
    }
    
    // 监听文字改变的方法
    - (void)textFieldDidChange:(UITextField *)textField {
        
        if (textField1.text.length > 0 && textField2.text.length > 0) {
            okAction.enabled = YES;
        } else {
            okAction.enabled = NO;
        }
    }
    
    // 通过通知来监听文字改变
    - (void)textFieldDidChangeNotification:(NSNotification *)notification {
        
        UIAlertController *alertController = (UIAlertController *)self.presentedViewController;
        
        if (alertController) {
            
    //        UITextField *login = alertController.textFields.firstObject;
    //        UITextField *passw = alertController.textFields.lastObject;
            
    //        UIAlertAction *cancelAction = alertController.actions.firstObject;
    //        UIAlertAction *okAction = alertController.actions.lastObject;
            
            if (textField1.text.length > 0 && textField2.text.length > 0) {
                okAction.enabled = YES;
            } else {
                okAction.enabled = NO;
            }
        }
    }
    

    使用UIAlertView实现带输入框的alertView及设置键盘样式,按钮动态可用

    使用UIAlertController实现带输入框的alertView和按钮动态可用

    相关文章

      网友评论

        本文标题:使用UIAlertController实现带输入框的alertV

        本文链接:https://www.haomeiwen.com/subject/ubjccxtx.html