如何使用PhoneNumberFormatter类在UITextField中格式化电话号码?

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

但我不明白如何实际执行它。 我有两个UITextFields,我想与该类一起使用,在其他用途​​的许多其他UITextFields的forms。

艾哈迈德的例子是:

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; } 

我不太确定把上面的代码放在哪里,或者如何在我的属性中代替他的variables。 到目前为止,我只能得到textfields拒绝input:/有没有人有一个更完整的这个类的实现的例子?

把这个代码放在实现UITextFieldDelegate的类中。 应该用你的UITextField实例replacemyTextField。 您应该使用设备的当前语言环境,而不是使用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; } 

HTH,

阿克沙伊

原来我能够把它挂在IB,而不是使用该绑定语句。 太棒了! 唯一的问题是currentLocalebuild议与类中的假设不匹配,所以我不得不编辑这个类来使用en_US而不是我们

你也可以使用google javascript“phoneutil”库格式化电话号码。 我做了它的工作正常。 脚步:

  1. 添加JavaScript库。
  2. 创build一个webview。
  3. 创build一个html文件(包括phoneutil库的所有头文件)。
  4. 像一个正常的html文件,创build一个

    / /写你自定义function在这里获得格式化的电话号码.. .. ..