OStack程序员社区-中国程序员成长平台

标题: iphone - 如何使用 PhoneNumberFormatter 类在 UITextField 中格式化电话号码? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:56
标题: iphone - 如何使用 PhoneNumberFormatter 类在 UITextField 中格式化电话号码?

我一直在这里查看一堆关于尝试将 UITextField 自动格式化为电话号码的线程。我看到了 Ahmed Abdelkader 的 PhoneNumberFormatter 类的链接 (http://the-lost-beauty.blogspot.com/2010/01/auto-formatting-phone-number.html)

但我不明白如何实际实现它。我有两个要与该类一起使用的 UITextField,在一个表单中与许多其他 UITextField 一起用于其他目的。

艾哈迈德的例子是:

UITextField *myTextField;
int myTextFieldSemaphore;
PhoneNumberFormatter *myPhoneNumberFormatter;
NSString *myLocale; //@"us"

//init semaphore
myTextFieldSemaphore = 0;

//bind events
[myTextField addTarget:self
                actionselector(autoFormatTextField
      forControlEvents:UIControlEventEditingChanged
];

//handle events
- (void)autoFormatTextFieldid)sender {
  if(myTextFieldSemaphore) return;
 myTextFieldSemaphore = 1;
 myTextField.text = [phoneNumberFormatter format:myTextField.text withLocale:myLocale];
 myTextFieldSemaphore = 0;
}

我不确定将上面的代码放在哪里,或者如何在我的属性中而不是他的变量中子。到目前为止,我只能让文本字段拒绝输入:/- 有没有人有这个类的更完整实现的例子?



Best Answer-推荐答案


只需将此代码放在实现 UITextFieldDelegate 的类中。 myTextField 应该替换为您的 UITextField 实例。您应该获取设备的当前语言环境,而不是使用 myLocale。并且 PhoneNumberFormatter 可以在使用后分配和释放。

- (void)autoFormatTextFieldid)sender
{
     if(myTextFieldSemaphore) return;
         myTextFieldSemaphore = 1;

     PhoneNumberFormatter* phoneNumberFormatter = [[PhoneNumberFormatter alloc] init];
     myTextField.text = [phoneNumberFormatter format:myTextField.text withLocale:[[NSLocale currentLocale] localeIdentifier]];
     [phoneNumberFormatter release];
     myTextFieldSemaphore = 0;
}

关于iphone - 如何使用 PhoneNumberFormatter 类在 UITextField 中格式化电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7184094/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4