Intereting Posts
Как вы получаете сигнал каждый раз, когда свойство текста UITextField изменяется в RxSwift Почему массив пуст после добавления объекта к нему сохранять изображения и видео в приложении iOS ios не получает список друзей facebook, используя график api UIButton не получает прикосновения после CAKeyframeAnimation Как загружать изображения асинхронно в uitableview без предупреждения о памяти? Xcode 5.0.2 и iOS 7.0.4 Развертывание открыть другой контроллер View без замены фона первого контроллера View Как я могу выполнить работу с перенаправленными запросами? Добавление подклассов в UIView в Swift Пользовательский UIView в xib Извещение об ошибке dealloc Значения анимации перехвата ios Search Display Controller в iOS 7. Отсутствует полоса при появлении клавиатуры Заполнение таблицы с категорией раздела Приложение iOS отклонено из-за того, что команда обзора не понимает ее использования. Повторно отправить?

Как мне форматировать текст UITextfield, который является номером телефона, в американском стиле?

Скажем, у меня есть этот номер 1234567890

и я хочу его в этом формате (xxx) xxx-xxxx

Поэтому на дисплее мне бы хотелось, чтобы он отображался как (123) 456-7890

Как я могу это достичь?

Должен ли я использовать какое-то регулярное выражение в текстовом поле?

Спасибо за ваше время

Попробуйте что-то вроде этого:

NSCharacterSet *digits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; NSString *filtered = [[[textField text] componentsSeparatedByCharactersInSet: digits] componentsJoinedByString: @""]; if ([filtered length] == 11) { NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(1, 3)], [filtered substringWithRange: NSMakeRange(4, 3)], [filtered substringWithRange: NSMakeRange(7, 4)]]; [textField setText: formatted]; } else if ([filtered length] == 10) { NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(0, 3)], [filtered substringWithRange: NSMakeRange(3, 3)], [filtered substringWithRange: NSMakeRange(6, 4)]]; [textField setText: formatted]; } 

Если вы используете Swift:

 let phoneNum = activity["phoneNumber"] as String let digits = NSCharacterSet.decimalDigitCharacterSet().invertedSet as NSCharacterSet let filtered1 = phoneNum.componentsSeparatedByCharactersInSet(digits) as NSArray let filtered = filtered1.componentsJoinedByString("") as NSString if filtered.length == 11 { let formatted = NSString(format: "(%@) %@-%@", filtered.substringWithRange(NSMakeRange(1, 3)), filtered.substringWithRange(NSMakeRange(4, 3)), filtered.substringWithRange(NSMakeRange(7, 4))) as NSString phoneNumberField.text = formatted } else if filtered.length == 10 { let formatted = NSString(format: "(%@) %@-%@", filtered.substringWithRange(NSMakeRange(0, 3)), filtered.substringWithRange(NSMakeRange(3, 3)), filtered.substringWithRange(NSMakeRange(6, 4))) as NSString phoneNumberField.text = formatted } 

Попробуйте использовать RMPhoneFormat .

На странице GitHub: «RMPhoneFormat предоставляет простой в использовании класс для форматирования и проверки номеров телефонов в приложениях iOS. Форматирование должно копировать то, что вы увидите в приложении« Контакты »для того же номера телефона».