diana
diana

Reputation: 427

Displaying phone number in US format in iPhone application

In my iPhone app I have a textfield to accept phone number. I need to display the number in US Phone number format. That is like (000) 000-0000. Typically like iPhone Contact phone number entry. How can I do this. Any idea will be greatly appreciated.

Upvotes: 0

Views: 6624

Answers (4)

hayden
hayden

Reputation: 293

- (BOOL) textFieldShouldReturn:(UITextField *)textField {
     //resign the keypad and check if 10 numeric digits entered...
     NSRange range;
     range.length = 3;
     range.location = 3;

textField.text = [NSString stringWithFormat:@"(%@) %@-%@", [textField.text substringToIndex:3], [textField.text substringWithRange:range], [textField.text substringFromIndex:6];
}

Upvotes: 0

includeMe
includeMe

Reputation: 2672

You will get the phone number formatter from

http://the-lost-beauty.blogspot.com/2010/01/locale-sensitive-phone-number.html

Don't forget to use the PhoneNumberFormatter class. This class is also availabel in that blog

Upvotes: 1

Ahmed Abdelkader
Ahmed Abdelkader

Reputation: 1735

For auto-formatting, I used addTarget in combination with my PhoneNumberFormatter that Adam kindly referenced. The implementation is described here.

Upvotes: 3

NP Compete
NP Compete

Reputation: 2379

Since the user is entering the phone number manually in the text field, you can use the UITextFieldDelegate Method textField:shouldChangeCharactersInRange:replacementString: to dynamically change the entered phone number by adding '(' before the 1st digit ')' after 3 digits are entered '-' after 6 digits. (or) after the number entry is done, you can change the displayed format like this:

- (BOOL) textFieldShouldReturn:(UITextField *)textField {
     //resign the keypad and check if 10 numeric digits entered...
     NSRange range;
     range.length = 3;
     range.location = 3;

textField.text = [NSString stringWithFormat:@"(%@)%@-%@", [textField.text substringToIndex:3], [textField.text substringWithRange:range], [textField.text substringFromIndex:6];
}

Upvotes: 0

Related Questions