我一直在这里查看一堆关于尝试将 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-推荐答案 strong>
只需将此代码放在实现 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/
|