ios 中的电子邮件和密码验证

Email and password validation in ios

因为我是 ios.I 的新手,所以我知道之前有人问过这个问题。但我在其中遇到了困难。我想验证电子邮件和密码,当用户输入正确的电子邮件和密码(8 到 10 个具有正则表达式的字符)时,按钮将启用并可以转到下一页。但如果电子邮件和密码不正确,则按钮将被禁用。正如我已经尝试过的那样,但是当用户点击按钮时它会起作用。

-(IBAction)clickOn:(id)sender
{
    NSString *emailReg = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailReg];

    if([emailTest evaluateWithObject:email.text] == NO)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"enter the Valid Mail id" message:@"Please Enter Valid Email Address." delegate:nil cancelButtonTitle:@"okay" otherButtonTitles:nil];
        [alert show];
    }
    HomePage *home=[[HomePage alloc]initWithNibName:@"HomePage" bundle:nil];
    [self.navigationController pushViewController:home animated:YES];
}

因为我是这样处理文本的

IBOutlet UITextField *email;
IBOutlet UITextField *pwd;

但我不知道如何使用方法附加文本字段以及如何在验证电子邮件和密码时禁用按钮并在两者都完美时启用它们。

首先,您需要像这样在界面中设置 UITextfield 委托。

然后在 viewdidload 方法中将委托分配给您的 Textfield

email.delegate=self;
pwd.delegate=self;

然后您需要在 UITextfield 委托方法中设置正则表达式验证条件,例如,

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    [textField addTarget:self
                  action:@selector(textFieldDidChange:)
        forControlEvents:UIControlEventEditingChanged];
}

- (void)textFieldDidChange:(UITextField *)textField {
    if (![email condition not matched ]|| [[pwd.text length]>8]) {


        NSLog(@"Button Hide");
    } else {
           NSLog(@"Button Show");

    }
}

在您的 UI 中添加 UITextField 的委托方法ViewController并在您的 viewDidLoad 中将文本字段委托设置为 self 或者您也可以在 InterfaceBuilder 中设置。默认情况下,点击按钮应在您的 viewDidLoad 方法中设置为禁用。同时设置按钮的 IBOutlet。

self.email.delegate = self;
[self.button setEnabled:NO];

在您的 ViewController

中添加 UITextfield 的委托方法
 - (void)textFieldDidEndEditing:(UITextField *)textField{
        if([textField.text length]>8){

            NSString *emailReg = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
            NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailReg];

            if ([emailTest evaluateWithObject:email.text] == NO){

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"enter the Valid Mail id" message:@"Please Enter Valid Email Address." delegate:nil cancelButtonTitle:@"okay" otherButtonTitles:nil];
                [alert show];
                [button setEnabled:NO]
            }else{
                [button setEnabled:YES]
            }
        }else{
             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"enter the Valid Mail id" message:@"Please Enter Valid Email Address." delegate:nil cancelButtonTitle:@"okay" otherButtonTitles:nil];
                [alert show];
        }
}

您也可以在上述方法中添加您的密码逻辑。我已指导您实现功能的技术。

然后实现仅用于导航目的的 onClick 方法

-(IBAction)clickOn:(id)sender
{
    HomePage *home=[[HomePage alloc]initWithNibName:@"HomePage" bundle:nil];
    [self.navigationController pushViewController:home animated:YES];
}