0

UITextfield に入力された 10 桁の電話番号を検証しようとしています。実際には、xxx-xxx-xxxx の形式の番号が必要です。したがって、ユーザーに削除してほしくない - シンボル。

ここで言及されているさまざまなアプローチを使用してみました: Detect backspace in UITextFieldですが、どれも機能していないようです。

私の現在のアプローチは次のとおりです。

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

    if (range.location == 12) {
        UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Invalid Input" message:@"Phone number can contain only 10 digits." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [testTextField resignFirstResponder];
        return NO;
    }

    if (range.length == 0 && [blockedCharacters characterIsMember:[string characterAtIndex:0]]) {
        UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Invalid Input" message:@"Please enter only numbers.\nTry again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        return NO;
    }

    if (range.length == 0 &&
        (range.location == 3 || range.location == 7)) {
        textField.text = [NSString stringWithFormat:@"%@-%@", textField.text, string];
        return NO;
    }

    if (range.length == 1 &&
        (range.location == 4 || range.location == 8))  {
        range.location--;
        range.length = 2;
        textField.text = [textField.text stringByReplacingCharactersInRange:range withString:@""];
        return NO;
    }

    return YES;
}

これについて何か考えはありますか?

どうもありがとうございました。

4

4 に答える 4

1

私はこのような同様の問題に直面しました:

xxx-xxx-xxxx のように数字の中に - を入れる必要があることはわかっています。

これは私がそれに取り組んだ方法です:

-(void)textFieldDidEndEditing:(UITextField *)textField{
     if (self.tf == textField) {
        NSMutableString *stringtf = [NSMutableString stringWithString:self.tf.text];
        [stringtf insertString:@"-" atIndex:2];
        [stringtf insertString:@"-" atIndex:5];
        tf.text = stringDID;
    }
}

したがって、ユーザーが番号の編集を完了したら、それらに - を追加します。

于 2013-02-20T16:36:53.383 に答える
0

このコードはいくつかの手がかりを提供するかもしれません:

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

if (textField.tag==txtYourTextField.tag) {

    const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
    int isBackSpace = strcmp(_char, "\b");

    if (isBackSpace == -8) {
        NSLog(@"isBackSpace");
        return YES; // is backspace
    }
    else if (textField.text.length == 10) {
        return YES;
    }
}

return NO; }
于 2014-01-21T12:06:52.833 に答える