我一直在看一堆关于尝试将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/