アプリで登録機能を開発しています。私はUITextFields
電子メール、パスワード、ユーザー名、名前などを持っています....そして、サーバーに情報を要求する前にそれらを検証したいと思います。これでキーパッドを閉じたときにそれらを検証します。
-(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.text=@"";
} 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._%+-]+@[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
があると思いますが、ユーザーが文字を入力するたびに、それが無効な電子メール (またはパスなど) であることをユーザーに示したくありません。
だから、私の質問は、ユーザーがキーボードで文字を入力するのをやめたが、キーパッドを閉じる前に、この検証をどのように管理できますか?
別の質問です。このメソッドのブール値を変数に格納できshouldChangeCharactersInRange
ますか?
ありがとうございました