Basta ya de buscar por todo internet ya que has llegado al espacio justo, contamos con la solución que deseas pero sin problema.
Solución:
Puede agregar un observador a su UITextField
:
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField)
[textField addTarget:self action:@selector(alertControllerTextFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
pero primero deshabilite su botón:
okAction.enabled = NO;
Luego validarlo en el método que especificó:
- (void)alertTextFieldDidChange:(UITextField *)sender
UIAlertController *alertController = (UIAlertController *)self.presentedViewController;
if (alertController)
UITextField *someTextField = alertController.textFields.firstObject;
UIAlertAction *okAction = alertController.actions.lastObject;
okAction.enabled = someTextField.text.length > 2;
Agregue la siguiente propiedad en su archivo de encabezado
@property(nonatomic, strong)UIAlertAction *okAction;
luego copie el siguiente código en su viewDidLoad
método de su ViewController
self.okAction = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:nil];
self.okAction.enabled = NO;
UIAlertController *controller = [UIAlertController alertControllerWithTitle:nil
message:@"Enter your text"
preferredStyle:UIAlertControllerStyleAlert];
[controller addTextFieldWithConfigurationHandler:^(UITextField *textField)
textField.delegate = self;
];
[controller addAction:self.okAction];
[self presentViewController:controller animated:YES completion:nil];
También implemente lo siguiente UITextField
método de delegado en su clase
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
NSString *finalString = [textField.text stringByReplacingCharactersInRange:range withString:string];
[self.okAction setEnabled:(finalString.length >= 5)];
return YES;
Esto debería funcionar
Implementación de Swift 3 basada en brillo del almarespuesta de:
var someAlert: UIAlertController
let alert = UIAlertController(title: "Some Alert", message: nil, preferredStyle: .alert)
alert.addTextField
$0.placeholder = "Write something"
$0.addTarget(self, action: #selector(self.textFieldTextDidChange(_:)), for: .editingChanged)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
let submitAction = UIAlertAction(title: "Submit", style: .default) _ in
// Do something...
submitAction.isEnabled = false
alert.addAction(submitAction)
return alert
func textFieldTextDidChange(_ textField: UITextField)
if let alert = presentedViewController as? UIAlertController,
let action = alert.actions.last,
let text = textField.text
action.isEnabled = text.characters.count > 0
Si crees que te ha sido útil este post, agradeceríamos que lo compartas con otros programadores y nos ayudes a dar difusión a nuestro contenido.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)