Как использовать класс PhoneNumberFormatter для форматирования номера телефона в UITextField? - PullRequest
2 голосов
/ 25 августа 2011

Я смотрел здесь несколько потоков о попытке автоматически отформатировать UITextField в телефонный номер. Я видел ссылки на класс PhoneNumberFormatter Ахмеда Абделькадера (http://the -lost-beauty.blogspot.com / 2010/01 / auto-formatting-phone-number.html )

Но я не понимаю, как на самом деле это реализовать. У меня есть два UITextFields, которые я хочу использовать с классом, в форме со многими другими UITextFields для других целей.

Пример Ахмеда:

UITextField *myTextField;
int myTextFieldSemaphore;
PhoneNumberFormatter *myPhoneNumberFormatter;
NSString *myLocale; //@"us"

//init semaphore
myTextFieldSemaphore = 0;

//bind events
[myTextField addTarget:self
                action:@selector(autoFormatTextField:)
      forControlEvents:UIControlEventEditingChanged
];

//handle events
- (void)autoFormatTextField:(id)sender {
  if(myTextFieldSemaphore) return;
 myTextFieldSemaphore = 1;
 myTextField.text = [phoneNumberFormatter format:myTextField.text withLocale:myLocale];
 myTextFieldSemaphore = 0;
}

Я не совсем уверен, куда поместить приведенный выше код или как использовать sub в моих свойствах вместо его переменных. До сих пор я смог получить только текстовые поля для отказа от ввода: / - Кто-нибудь получил пример более полной реализации этого класса?

Ответы [ 3 ]

2 голосов
/ 25 августа 2011

Просто поместите этот код в класс, который реализует UITextFieldDelegate. myTextField должен быть заменен вашим UITextField экземпляром. Вместо использования myLocale вы должны получить текущую локаль устройства. И PhoneNumberFormatter может быть выделено и выпущено после использования.

- (void)autoFormatTextField:(id)sender
{
     if(myTextFieldSemaphore) return;
         myTextFieldSemaphore = 1;

     PhoneNumberFormatter* phoneNumberFormatter = [[PhoneNumberFormatter alloc] init];
     myTextField.text = [phoneNumberFormatter format:myTextField.text withLocale:[[NSLocale currentLocale] localeIdentifier]];
     [phoneNumberFormatter release];
     myTextFieldSemaphore = 0;
}

НТН,

Акшай

1 голос
/ 26 августа 2011

Оказывается, я смог подключить его в IB вместо использования этого оператора связывания.Работает отлично!Единственное, что рекомендация currentLocale не соответствует предположениям в классе, поэтому мне пришлось отредактировать класс, чтобы он использовал en_US вместо нас

0 голосов
/ 30 марта 2012

Вы также можете отформатировать номер телефона, используя gavascript googleascript phoneutil.Я сделал это, все работает нормально.шаги:

  1. добавить библиотеки javascript.
  2. создать веб-просмотр.
  3. создать один HTML-файл (включая все заголовки библиотеки phoneutil).
  4. как обычный HTML-файл, создайте

    // напишите здесь свою пользовательскую функцию для получения отформатированных телефонных номеров .. .. ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...