电话号码格式ios

jay*_*esh 4 nsstring ios

在我的应用程序中,我将电话号码作为用户的输入.号码应采用美国格式.我想动态地显示它(555)-888-888.例如,当用户在达到4位时开始输入数字时,它显示如下的数字(555)-4,依此类推.我试过replaceString方法,但我发现它不起作用.

dam*_*hec 6

看看NBAsYouTypeFormatter类的libPhoneNumber-IOS库.

NSAsYouTypeFormatter使用您的美国地区代码创建新实例:

NBAsYouTypeFormatter *asYouTypeFormatter = [[NBAsYouTypeFormatter alloc] initWithRegionCode:REGION_CODE_STRING];
Run Code Online (Sandbox Code Playgroud)

然后,每当用户更改您拨打的电话号码时:

- (NSString*)inputDigit:(NSString*)nextChar;

要么

- (NSString*)removeLastDigit;

NSString从这两种方法返回的是动态格式化的电话号码.


NSP*_*tik 6

我将从头开始解释.因此,新用户可以从一开始就获得成功.

这里下载libPhoneNumber-iOS库.在该链接页面的底部,您将找到需要添加到项目中的文件.

现在,按照以下步骤实施.

(1)在视图控制器中导入需要格式化文本字段的文件.

#import "NBPhoneMetaDataGenerator.h"
#import "NBPhoneNumberUtil.h"
#import "NBAsYouTypeFormatter.h"
Run Code Online (Sandbox Code Playgroud)

并在头文件中创建类型为NBAsYouTypeFormatter的实例:

NBAsYouTypeFormatter *asYouTypeFormatter;
Run Code Online (Sandbox Code Playgroud)

(2)在该viewDidLoad视图控制器的方法中,初始化之前采用的对象:

asYouTypeFormatter = [[NBAsYouTypeFormatter alloc] initWithRegionCode:@"IN"];
Run Code Online (Sandbox Code Playgroud)

注意:@"IN"适用于印度.您可以将其设置为您想要的任何内容.请参阅将包含在libPhoneNumber-iOS库中的plist文件,以查看区域代码的完整列表.

(3)在委托方法中UITextField,动态管理yout textfield的文本.

#pragma mark
#pragma mark - Phone Number textfield formatting

# define LIMIT 18 // Or whatever you want

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // Just allow 18 digits
    if(!(([string length] + range.location) > LIMIT))
    {
        // Something entered by user
        if(range.length == 0)
        {
            [txtNumber setText:[asYouTypeFormatter inputDigit:string]];
        }

        // Backspace
        else if(range.length == 1)
        {
            [txtNumber setText:[asYouTypeFormatter removeLastDigit]];
        }
    }

    return NO;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 !!!