viernes, 28 de agosto de 2015

Crear un formulario en iOS nivel PRO con UITextField. Parte III.

Continuamos a partir del anterior artículo, el cual podréis ver pulsando aquí. Lo primero que vamos a hacer es crear un botón. Este botón posteriormente será de Login, pero como todavía no podemos hacer login a ningún sitio, lo utilizaremos para hacer comprobaciones en los UITextField.

loginButton = [[UIButton alloc] initWithFrame:CGRectMake(0., 0., 100., 30.)];
    [loginButton setCenter:CGPointMake(self.view.center.x, passWordTextField.center.y + passWordTextField.frame.size.height + loginButton.frame.size.height)];
    [loginButton setTitle:NSLocalizedString(@"Check", nil) forState:UIControlStateNormal];
    [loginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [loginButton addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside];
    

    [self.view addSubview:loginButton];

Posteriormente declaramos el método checkAction y el método checkFields que devolverá un booleano analizando los diferentes UITextField creados.

- (void)checkAction
{
    if([self checkFields])
        NSLog(@"Todo OK");
}

- (BOOL)checkFields
{
    if(nameTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede estar vacío.", nil)];
        return false;
    }
    if(nameTextField.text.length > 20)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede superar los 20 caracteres.", nil)];
        return false;
    }
    if(passWordTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede estar vacío.", nil)];
        return false;
    }
    if(passWordTextField.text.length > 6)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede superar los 6 caracteres.", nil)];
        return false;
    }
    if(mailTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede estar vacío.", nil)];
        return false;
    }
    if(mailTextField.text.length > 50)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede superar los 50 caracteres.", nil)];
        return false;
    }
    
    return true;

}

Si compilamos y ejecutamos la App podemos comprobar como nos muestra las alertas si no cumplimos alguna de las condiciones. Pero, si yo quiero prohibir al usuario, que por ejemplo no añada más de 20 caracteres en su UITextField haremos los siguiente.


Tendremos que modificar el siguiente método del delegado de UITextField

//Método que se llama cuando se introducae algún valor por teclado
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSUInteger newLength;
    
    newLength = [textField.text length] + [string length] - range.length;
    
    if([textField isEqual:nameTextField])
        return (newLength > 20) ? NO : YES;
    if([textField isEqual:mailTextField])
        return (newLength > 50) ? NO : YES;
    if([textField isEqual:passWordTextField])
        return (newLength > 6) ? NO : YES;

    return YES;
}

Si ahora compilamos y ejecutamos la App. Podemos comprobar como si intentamos introducir más caracteres de los indicados en el método, el UITextField no nos permite añadirlos.


Os dejo el código en el siguiente path de GitHub





  

No hay comentarios:

Publicar un comentario