由于我是 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/