电话号码格式仅显示在电话号码文本字段中

阿卜杜勒·拉米雷斯

我有一个用户使用以下代码填写电话号码。除了在同一个视图控制器中有多个文本字段(即名称,电话号码,电子邮件)外,其他所有内容都运行良好。使用当前代码,它会锁定,并且除了电话号码字段之外,不允许其他任何输入。

我的问题是我如何指定仅适用于此UI文本字段的代码?

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





    NSString *newString = [_phoneField.text stringByReplacingCharactersInRange:range withString:string];
    NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
    NSString *decimalString = [components componentsJoinedByString:@""];

    NSUInteger length = decimalString.length;
    BOOL hasLeadingOne = length > 0 && [decimalString characterAtIndex:0] == '1';

    if (length == 0 || (length > 10 && !hasLeadingOne) || (length > 11)) {
        _phoneField.text = decimalString;
        return NO;
    }

    NSUInteger index = 0;
    NSMutableString *formattedString = [NSMutableString string];

    if (hasLeadingOne) {
        [formattedString appendString:@"1 "];
        index += 1;
    }

    if (length - index > 3) {
        NSString *areaCode = [decimalString substringWithRange:NSMakeRange(index, 3)];
        [formattedString appendFormat:@"(%@) ",areaCode];
        index += 3;
    }

    if (length - index > 3) {
        NSString *prefix = [decimalString substringWithRange:NSMakeRange(index, 3)];
        [formattedString appendFormat:@"%@-",prefix];
        index += 3;
    }

    NSString *remainder = [decimalString substringFromIndex:index];
    [formattedString appendString:remainder];

    _phoneField.text = formattedString;

    return NO;
}
妮米莎·帕特尔(Nimisha Patel)

如果只想对电话号码文本字段执行上述代码,只需将所有代码放在if条件中,如下所示:

- (BOOL)textField:(UITextField *)pilotPhone shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
     // here self.txtPhoneNumber is ur phone number textfield
     if(pilotPhone == self.txtPhoneNumber)
     {

NSString *newString = [_phoneField.text stringByReplacingCharactersInRange:range withString:string];
// all other code ---------
return NO;
     }

return YES;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章