1

ユーザーは、1 つのテキスト フィールドに電子メール ID または電話番号を入力できます。ユーザー番号が電子メール ID に入力されると、電子メールが検証されます。ユーザーが電話番号を入力すると、電話番号が検証されます。検証は 1 つのテキスト フィールドでのみ行う必要があります。メール ID と電話番号の検証とその方法を認識しています

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

ユーザーが電子メールIDまたは電話を入力したかどうかを検出し、それに応じて検証する方法は?

4

6 に答える 6

3

からのNSStringオブジェクトtextfieldに文字@が含まれている場合、それは電子メールであり、それ以外の場合はそうではありません。さらに、文字列に含まれる文字列が 10 文字で、すべてが電話番号検証用の数字であるかどうかを確認することもできます。

以下のコードを使用して@文字を見つけることができます。

  NSString *str = self.textField.text;
  NSRange range = [str rangeOfString:@"@"];
  if (range.location != NSNotFound)
  {
    // it is an email
  }
  else if(str.length == 10 && [str rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location != NSNotFound) {
    // it is a phone
  }
  else{
    // it is neither of the two
  }
于 2013-09-16T06:59:38.460 に答える
1

ユーザーは両方を入力できますが、ユーザーが実際に何を入力しようとしているかはわかりません。

両方の検証を適用することをお勧めします。そのうちの 1 つが成功した場合、彼が何を入力したかがわかるので、先に進むことができます。

編集:他の回答を読んで、「@」文字をチェックすることは良い考えではないと思います。ユーザーが誤ってその文字を入力しなかった可能性があるため(つまり、番号2を押した場合)、間違った検証を適用することになります

于 2013-09-16T07:00:49.693 に答える
0

UITextfield テキストの検証には、このメソッドを使用します

  • (void)textFieldDidEndEditing:(UITextField *)textField

ユーザーがキーボードを入力するたびに呼び出されるたびに shouldChangeCharactersInRange メソッド

  • (void)textFieldDidEndEditing:(UITextField *)textField {

    if(textField.tag = 1){

    if([self isValidPhoneNumber]||[self isValidEmail]){

    成功を返します。

    }そうしないと{

    リターンが失敗します。}

}

}

于 2013-09-16T09:23:43.450 に答える
0

2 つのバリデータを作成し、そのうちの 1 つが成功するかどうかを確認する必要があると思います。

- (BOOL) isTextValid: (NSString *) text
{
    return [self isPhoneNumberValid: text] || [self isEmailValid: text];
}
于 2013-09-16T07:01:04.740 に答える
0

if...else 条件を確認する必要がある場合があります。

入力した単語に @ 文字が含まれている場合は、電子メール ID の検証に進み、それ以外の場合は電話の検証に進みます。

于 2013-09-16T07:07:44.917 に答える