SHSPhoneComponent 2.32

SHSPhoneComponent 2.32

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Dec 2018

Maintained by Serheo Shatunov, Sergei Shatunov.



  • By
  • Serheo Shatunov

SHSPhoneComponent

UITextField and NSFormatter subclasses for formatting phone numbers. Allow different formats for different countries(patterns). Caret positioning works excellent.

Swift version is here - https://github.com/Serheo/PhoneNumberFormatter

How To Install

Use any of next methods:

  • use embedded framework /SHSPhoneComponents/SHSPhoneComponent.xcodeproj (iOS 8+)
  • pod 'SHSPhoneComponent'
  • copy /SHSPhoneComponents/Library folder to your project.

And import "SHSPhoneLibrary.h" on your Controller.

Example Usage

If you need complete example please see 'Example_iOS7+' or 'Example_iOS8+embedded' folders.

Default Format

[self.phoneField.formatter setDefaultOutputPattern:@"+# (###) ###-##-##"];

shspc example 1

All input strings will be parsed in that way. Example: +7 (920) 123-45-67

Prefix Format

You can set prefix on all inputs:

[self.phoneField.formatter setDefaultOutputPattern:@"(###) ###-##-##"];
self.phoneField.formatter.prefix = @"+7 ";

shspc example 1

Multiple Formats

[self.phoneField.formatter setDefaultOutputPattern:@"##########" imagePath:nil];
[self.phoneField.formatter addOutputPattern:@"+# (###) ###-##-##" forRegExp:@"^7[0-689]\\d*$" imagePath:@"flagRU"];
[self.phoneField.formatter addOutputPattern:@"+### (##) ###-###" forRegExp:@"^374\\d*$" imagePath:@"flagAM"];

shspc example 2

Multiple Formats with prefix

[self.phoneField.formatter setDefaultOutputPattern:@"### ### ###"];
self.phoneField.formatter.prefix = @"+7 ";
[self.phoneField.formatter addOutputPattern:@"(###) ###-##-##" forRegExp:@"^1\\d*$" imagePath:@"SHSPhoneImage.bundle/flag_ru"];
[self.phoneField.formatter addOutputPattern:@"(###) ###-###" forRegExp:@"^2\\d*$" imagePath:@"SHSPhoneImage.bundle/flag_ua"];

Specific Formats

If you want to format some numbers in specific way just do

[self.phoneField.formatter addOutputPattern:@"+# (###) ###-##-##" forRegExp:@"^7[0-689]\\d*$" imagePath:@"flagRU"];
[self.phoneField.formatter addOutputPattern:@"+### (##) ###-###" forRegExp:@"^374\\d*$" imagePath:@"flagAM"];

Formatting

If you need only formatting function you can use SHSPhoneNumberFormatter class. For additional class info see http://serheo.github.io/SHSPhoneComponent/

Issues and Solutions

if you are using any predictions/suggestion in the textfield, set hasPredictiveInput flag to YES.

Requirements

ARC Enabled. iOS 7+

License

SHSPhoneComponent is available under the MIT license. See the LICENSE file for more info.