Serheo / Phonenumberformatter
Programming Languages
Projects that are alternatives of or similar to Phonenumberformatter
Phone Number Formatter
UITextField and NSFormatter subclasses for formatting phone numbers. Allow different formats for different countries(patterns). Caret positioning works excellent.
Swift 4.
If you need ObjC support use - https://github.com/Serheo/SHSPhoneComponent/
Installation
Carthage
github "Serheo/PhoneNumberFormatter"
CocoaPods
pod "SwiftPhoneNumberFormatter"
Getting Started
Default Format
textField.config.defaultConfiguration = PhoneFormat(defaultPhoneFormat: "(###) ###-##-##")
All input strings will be parsed in that way. Example: +1 (123) 123-45-67
Prefix Format
You can set prefix on all inputs:
textField.config.defaultConfiguration = PhoneFormat(defaultPhoneFormat: "(###) ###-##-##")
textField.prefix = "+7 "
Multiple Formats
textField.config.defaultConfiguration = PhoneFormat(defaultPhoneFormat: "##########")
textField.prefix = nil
let custom1 = PhoneFormat(phoneFormat: "+# (###) ###-##-##", regexp: "^7[0-689]\\d*$")
textField.config.add(format: custom1)
let custom2 = PhoneFormat(phoneFormat: "+### ###-##-##", regexp: "^380\\d*$")
textField.config.add(format: custom2)
Multiple Formats with prefix
textField.config.defaultConfiguration = PhoneFormat(defaultPhoneFormat: "### ### ###")
textField.prefix = "+7 "
let custom1 = PhoneFormat(phoneFormat: "(###) ###-##-##", regexp: "^1\\d*$")
textField.config.add(format: custom1)
let custom2 = PhoneFormat(phoneFormat: "(###) ###-###", regexp: "^2\\d*$")
textField.config.add(format: custom2)
Listening to changes
To be notified of changes on the textField input add a textDidChangeBlock
closure
textField.textDidChangeBlock = { field in
if let text = field?.text, text != "" {
print(text)
} else {
print("No text")
}
Attempting to listen to changes through other means will likely fail (e.g., implementing UITextFieldDelegate
's textField:shouldChangeCharactersIn:range:
).
Requirements
iOS 9+ Swift 4
License
PhoneNumberFormatter is available under the MIT license. See the LICENSE file for more info.