Я разрабатываю функцию регистрации в своем приложении. У меня есть UITextFields
, такие как электронная почта, пароль, имя пользователя, имя ... и я хочу проверить их до того, как я сделаю запрос на сервер с информацией. Теперь я проверить их, когда я закрыть клавиатуру, делая это:Проверка UITextField для электронной почты, пароля, имени
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
if (textField == emailTextField)
{
if(emailTextField.text.length > 5){
if(![self validateEmailWithString:emailTextField.text])
{
// user entered invalid email address
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Enter a valid email address." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
return NO;
//[email protected]"";
} else {
[self.emailDelegate sendEmailForCell:emailTextField.text];
[textField resignFirstResponder];
return YES;
}
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Email address too Short" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
return NO;
}
}
return YES;
}
- (BOOL) validateEmailWithString:(NSString *)emailStr
{
NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:emailStr];
}
Но, когда я не закрыть клавишную панель с textFieldShouldReturn
метод, который я не могу проверить UITextField
где я печатаю. Я имею в виду, когда я нажимаю на следующий UITextField
, прежде чем нажимать клавишу возврата на клавиатуре, я могу ввести следующий UITextField
и textFieldShouldReturn
никогда не был вызван.
Итак, я должен использовать этот метод - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
, но я не хочу показывать пользователю, что это недействительный адрес электронной почты (или пропуск или что-то еще) каждый раз, когда он набирает письмо.
Итак, мой вопрос: как я могу управлять этой проверкой, когда пользователь перестает печатать буквы на клавиатуре, но прежде чем закрыть клавиатуру?
Другой вопрос. Могу ли я сохранить в переменной Boolean этого метода shouldChangeCharactersInRange
?
Спасибо
Но с 'textFieldShouldBeginEditing' Как пользователь не может покинуть это текстовое поле? Я попытался с помощью этого метода http://stackoverflow.com/questions/7707906/how-to-check-if-uitextfields-text-is-valid-email, и он не работает – croigsalvador
@RoxeeMan Упс - это была копия/вставить ошибку. Я исправил ответ - он должен был быть «ShouldEnd», а не 'ShouldBegin'. Благодарю. – rmaddy
Я хотел сказать с 'shouldChangeCharactersInRange', как в моей ссылке. Когда я пытаюсь, это не работает. Я не знаю, что делать с возвращаемой переменной. Или как управлять им. Теперь я попытаюсь показать действительный или недопустимый ярлык. Когда я оставляю 'UITextField'' textFieldDidEndEditing' или 'textFieldShouldEndEditing' Но я бы хотел, чтобы вы знали, как использовать' shouldChangeCharactersInRange' – croigsalvador