2017-01-26 10 views
0

送信ボタンとキャンセルボタンがあるアラートに電子メールフィールドがあるので、誰でも助言できます。警告のテキストフィールドの下にカスタムエラーメッセージを表示するにはどうすればよいですか?

私はで使用している電子メールの検証結果を返し、NSLogという文でカスタムメッセージを表示します。

私の質問は、boolの値が0の場合、入力した電子メールのテキストをUITextFieldに表示し、テキストフィールドの下部にエラーメッセージが赤色で表示されるようにしたいとします。 bool値は1として返されるまで、また、アラートが表示されるはずです

コード:

UIAlertController * alert= [UIAlertController 
           alertControllerWithTitle:@"Forgot Password" 
           message:@"" preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* submit = [UIAlertAction 
          actionWithTitle:@"Submit" 
          style:UIAlertActionStyleDefault 
          handler:^(UIAlertAction * action) { 
           //Do Some action here 
           UITextField *alertTextField = alert.textFields.firstObject; 

           NSLog(@"%d",[self validateEmailWithString:alertTextField.text]); 
           int returnValue = (int)[self validateEmailWithString:alertTextField.text]; 
           NSLog(@"interger value %i",returnValue); 
           if (returnValue == 1) { 
            NSLog(@"correct format"); 
           }else 
           NSLog(@"wrong format"); 

         }]; 
UIAlertAction* cancel = [UIAlertAction 
          actionWithTitle:@"Cancel" 
          style:UIAlertActionStyleDefault 
          handler:^(UIAlertAction * action) { 
           [alert dismissViewControllerAnimated:YES completion:nil]; 
         }]; 

[alert addAction:submit]; 
[alert addAction:cancel]; 

[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    textField.placeholder = @"Enter your E-Mail Address"; 
    _enteredEMail = textField.text; 
    NSLog(@"%@ntered Email Address",textField.text); 
+0

UIAlertControllerは、テキストフィールドの下部に赤色のエラーメッセージをサポートしていませんが、テキストフィールドの色を変更できます。 –

+0

大丈夫ですが、テキストフィールドに適切な入力が届かない限り、ダイアログボックス(アラート)をどのように保持しますか? –

+0

送信ボタン操作でUIAlertActionを呼び出すことができます。より簡単にテキストを検証し、送信ボタンを有効にすることができます。 –

答えて

0

UIAlertControllerは、テキストフィールドの下にある赤でエラーメッセージをサポートしていませんが、あなたは色を変更することができますテキストフィールドの

このメソッドを追加してtextField.textの長さをチェックするか、電子メールの妥当性チェックを追加してから送信ボタンを有効にすることができます。

submit.enabled = NO; //after submit button UIAlertAction set 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
     { 
      NSString *finalString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
      [submit setEnabled:(finalString.length >= 1)]; 
      // for textField border colour 
      textField.layer.borderColor=[[UIColor redColor]CGColor]; 
      textField.layer.borderWidth= 2.0f; 
      return YES; 
     } 

あなたは、ダイアログボックスを保持することはできませんが、再びそれを呼び出すからのReturnValue == 0

if (returnValue == 0) { 
    NSLog(@"correct format"); 
} 
else{ 
    NSLog(@"wrong format"); 
    [self presentViewController:alert animated:YES completion:nil]; 
} 

はまたUIAlertView Text Input and Validationを参照している場合、ボタンのアクションを提出することができます。

+0

if(returnValue == 1){ NSLog(@ "正しいフォーマット"); [alert dismissViewControllerAnimated:はい完了:なし]; } else NSLog(@ "wrong format"); [self presentViewController:警告アニメーション:はい完了:なし]; ループ内で警告が表示され、両方の場合にifとelseが表示されます。 –

+0

はい。ループ中ですが、サブミットボタンをクリックすると自動的に表示されます –

+0

送信ボタンをクリックすると、メールが間違った形式で表示され、その後、アラートビューの呼び出し自体が自動的に解除されます。そのアラートビューのスタックを作成しません。 –

関連する問題