Как проверить текстовое поле - PullRequest
0 голосов
/ 08 апреля 2011

В моем приложении я беру одно текстовое поле для электронной почты, а другое - для имени пользователя и кнопки, пишу код под событием кнопки, после ввода данных нажимаю кнопку, чтобы отобразить другое представление, моя проблема - написать код для проверки электронной почты (aaa@gmail.com в этомформат) это представление предупреждений отображается при нажатии кнопки (msg-введите правильный формат электронной почты), но я хочу, чтобы эти предупреждения отображались при переходе к следующему текстовому файлу, если я ввел электронную почту в неправильном формате, а фильм в следующее поле, его имя пользователя с текстовым именем в то времядисплей.

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

Используйте NSPredicate и Regex:

- (BOOL)validateEmailString:(NSString*)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:email];
}

Для писем, разделенных запятой (,):

- (NSMutableArray*)validateEmailWithString:(NSString*)emails
{
    NSMutableArray *emails = [[NSMutableArray alloc] init];
    NSArray *emailOfArray = [emails componentsSeparatedByString:@","];
    for (NSString *email in emailOfArray)
    {
        NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
        NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
        if ([emailTest evaluateWithObject:email])
            [emails addObject:email];
    }
    return [emails autorelease];
}
0 голосов
/ 08 апреля 2011

Я проверил свои поля в событии editDidEnd и использовал следующий код:

 - (IBAction) emailValidation:(id)sender {
NSString *eml=((UITextField *)sender).text;

NSString *regex = @"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b"; 

NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

BOOL x= [regextest evaluateWithObject:eml];

if (x==FALSE) {
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Errror!" message:@"You have entered incorrect email ID" delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
    [alert show];
    [emailField becomeFirstResponder];
    [alert release];    
}   
}

-(IBAction)passwordValidator:(id)sender{
NSString *pwd=[NSString stringWithString:passwordField.text];
int lngth=[pwd length]; 
int minlength=6;

NSString *regex = @"\\b([a-zA-Z0-9]+)\\b"; 

NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

BOOL x= [regextest evaluateWithObject:pwd];

if (lngth>=minlength) {
    NSLog(@"passoword length is enough");
    if (x==FALSE) {
        NSLog(@"Special charector check enabled");
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"No Special Charectors" message:@"please don't use special charectors" delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [passwordField becomeFirstResponder];
        [self.view addSubview:passwordField];
    }
}
else {
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Poor length" message:@"Password length must not be less than 8.." delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
    [alert show];
    [alert release];
    [passwordField becomeFirstResponder];
}
}

Попробуйте их, затем вызовите любое соответствующее событие. Вы получите желаемый результат.удачи :) 1004 *

0 голосов
/ 08 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...