How to change border color of UIAlertController text field

I am trying to use the UIActionController in ios to display a text field, and I want to know how to change the border color of a field.

my code is:

- (void)showChangePasswordAlertView { UIAlertController *actionVC = [UIAlertController alertControllerWithTitle:@"" message:@"Change your password." preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { }]; [actionVC addAction:action]; action = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { }]; [actionVC addAction:action]; [actionVC addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.placeholder = @"old password"; textField.borderStyle = UITextBorderStyleNone; textField.layer.borderColor = [UIColor redColor].CGColor; textField.layer.borderWidth = 1.0 ; textField.secureTextEntry = YES ; }]; [actionVC addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.placeholder = @"new password"; textField.borderStyle = UITextBorderStyleNone; textField.secureTextEntry = YES ; }]; [actionVC addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.placeholder = @"confirm new password"; textField.borderStyle = UITextBorderStyleNone; textField.secureTextEntry = YES ; }]; [self presentViewController:actionVC animated:YES completion:nil]; } 

but the result:

enter image description here

Does any body know how to do this? Thanks.

+7
uitextfield
source share
2 answers

This is a bit hacky, but it definitely works (tested on iOS 8.3):

 UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" message:@"This is an alert." preferredStyle:UIAlertControllerStyleAlert]; [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.placeholder = @"This is my placeholder"; [[textField superview] superview].backgroundColor = [UIColor redColor]; }]; 
0
source share

He hacked too

After show UIAletController:

 viewController.present(alert, animated: true, completion: nil) 

Add this code:

 YOUR_ALERT_CONTROLLER.textFields.forEach { if let views = $0.superview?.superview?.subviews { for case let visualView as UIVisualEffectView in views { visualView.contentView.subviews.first?.backgroundColor = CURRENT_COLOR } } } 
0
source share

All Articles