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

标签 ios objective-c validation

由于我是 ios 新手,我知道这个问题以前曾被问过。但我在其中遇到了困难。我想验证电子邮件和密码,当用户输入正确的电子邮件和密码(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];
}

因为我已经像这样采用了textfied

IBOutlet UITextField *email;
IBOutlet UITextField *pwd;

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

最佳答案

在 UIViewController 中添加 UITexTField 的委托(delegate)方法,并在 viewDidLoad 中将文本字段委托(delegate)设置为 self,或者也可以在 InterfaceBuilder 中设置。默认情况下,应在 viewDidLoad 方法中将单击按钮设置为禁用。还要设置按钮的 IBOutlet。

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

在 ViewController 中添加 UITextfield 的委托(delegate)方法

 - (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];
}

关于ios - ios 中的电子邮件和密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286236/

相关文章:

javascript - 解析从云代码向特定用户发送推送通知

ios - 使用 CGContextAddArcToPoint() 绘制圆弧时,(x1,y1) 和 (x2,y2) 是什么意思?

设备锁定时的 iOS 11 信标检测问题

Objective-C 发起/恢复 wifi 连接

validation - 使用 JWKS golang 进行 JWT 验证

ios - 如何在不重复的情况下在部分中设置 UITableViewCell backgroundColor?

ios - 如何使用Moscapsule接收订阅Topic的消息

iphone - 键盘关闭后 UITableView 无法滚动到底部

C 编程中验证输入的常规编码

jquery - 单击按钮时输入文本消失