Code given below will help you to format mobile number like (XXX)-(XXX)-XXXX
you just need to call this method in your shouldChangeCharactersIn method like this,
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// phonenumber write in specific formate
if textField == yourTextfield{
return setPhonenumberFormate(textField, shouldChangeCharactersIn: range, replacementString: string)
}
return true
}
public func setPhonenumberFormate(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)-> Bool{
let length: Int = Int(getLength(mobileNumber: textField.text!))
if length ==10 {
if range.length == 0 {
return false
}
}
if length == 3 {
let num: String = formatNumber(mobileNumber: textField.text!)
textField.text = "(\(num)) "
if range.length > 0 {
textField.text = "\(num.substring(to: num.index(num.startIndex, offsetBy: 3)))"
}
}
else if length == 6 {
let num: String = formatNumber(mobileNumber: textField.text!)
textField.text = "(\(num.substring(to: num.index(num.startIndex, offsetBy: 3)))) \(num.substring(from: num.index(num.startIndex, offsetBy: 3)))-"
if range.length > 0 {
textField.text = "(\(num.substring(to: num.index(num.startIndex, offsetBy: 3)))) \(num.substring(from: num.index(num.startIndex, offsetBy: 3)))"
}
}
return true
}
func formatNumber(mobileNumber: String) -> String {
var number : String!
number = mobileNumber.replacingOccurrences(of: "(", with: "")
number = number.replacingOccurrences(of: ")", with: "")
number = number.replacingOccurrences(of: " ", with: "")
number = number.replacingOccurrences(of: "-", with: "")
number = number.replacingOccurrences(of: "+", with: "")
let length: Int = Int(number.characters.count)
if length > 10 {
number = mobileNumber.substring(from: mobileNumber.index(number.startIndex, offsetBy: length - 10))
}
return number
}
func getLength(mobileNumber: String) -> Int {
var number : String!
number = mobileNumber.replacingOccurrences(of: "(", with: "")
number = number.replacingOccurrences(of: ")", with: "")
number = number.replacingOccurrences(of: " ", with: "")
number = number.replacingOccurrences(of: "-", with: "")
number = number.replacingOccurrences(of: "+", with: "")
let length: Int = Int(number.characters.count)
return length
}