我一直在看一堆关于尝试将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
                action:@selector(autoFormatTextField:)
      forControlEvents:UIControlEventEditingChanged
];

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

我不太确定上面的代码在哪里,或者如何在我的属性中而不是他的变量中进行细分。到目前为止,我只能使文本字段拒绝输入:/-有没有人得到此类更完整实现的示例?

最佳答案

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

- (void)autoFormatTextField:(id)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/

10-11 23:05
查看更多