如何在iOS中为不同的区域代码实时格式化电话号码(使用UITextfield时)?

NSPratik

我找到了“ NBAsYouTypeFormatter ”,并参考了提供的演示。但是,当用户在UITextField中输入电话号码时,我想动态设置电话号码的格式。

请记住,在我的情况下,区域代码并不固定于一个或两个国家,例如,仅@@“ US”或仅其他国家/地区。用户将从下拉菜单中选择地区代码,而我将通过以下行将所选代码传递给我:

NBAsYouTypeFormatter *asYouTypeFormatter = [[NBAsYouTypeFormatter alloc] initWithRegionCode:@"US"];  // may be any other than 'US'
NSString *output = [asYouTypeFormatter inputString:@"9999988888"];

现在,当用户键入数字文本字段时,如何动态格式化数字文本字段?

NSPratik

这就是我实现这一目标的方式。我将从头开始解释。因此,新用户可以从头开始。

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

您的捆绑包应如下所示:

束

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

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

#import "NBPhoneMetaDataGenerator.h"
#import "NBPhoneNumberUtil.h"
#import "NBAsYouTypeFormatter.h"

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

NBAsYouTypeFormatter *asYouTypeFormatter;

(2)在该视图控制器viewDidLoad方法中,初始化先前获取的对象:

asYouTypeFormatter = [[NBAsYouTypeFormatter alloc] initWithRegionCode:@"IN"];

注意:@“ IN”是印度的。您可以将其设置为任何您想要的。请参阅libPhoneNumber-iOS库中将包含的plist文件,以查看区域代码的完整列表。

(3)在UITextField的委托方法中,动态管理yourtextfield的文本。

#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)
        {
            [textNumber setText:[self.asYouTypeFormatter inputDigit:string]];
        }

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

    return NO;
}

希望对别人有帮助!

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章