Formato de número de teléfono en time real utilizando NBAsYouTypeFormatter

He buscado por todas partes y he visto muchas soluciones a esto, pero la mayoría están siendo "hackeantes" y propensas a errores.

Estoy intentando formatear el número de teléfono en UITextField usando libBhoneNumber iOS Class NBAsYouTypeFormatter.

Sin embargo, no pude encontrar una forma adecuada de usarlo.

A continuación es mi bash. (De este hilo Número de teléfono, formatting ios )

var asYouTypeFormatter = NBAsYouTypeFormatter(regionCode: "US"); func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if textField == phoneTextField { if range.length == 0 { textField.text = asYouTypeFormatter.inputDigit(textField.text + string); } else if range.length == 1 { textField.text = asYouTypeFormatter.removeLastDigit(); } return false; } return true; } 

Este código realmente detecta range.length y no tiene en count que si el usuario selecciona uno o más caracteres y luego escribe .

Si el usuario hace eso, se producirá que no sea tipo.

¿Alguien ha encontrado un método más elegante para este problema?