Обработка не-ascii символов в textField: shouldChangeCharactersInRange: replaceString: - PullRequest
2 голосов
/ 17 января 2011

Я пытаюсь предотвратить ввод китайского языка (или иным образом всех символов, не являющихся ascii) в UITextField. Как видно из других постов, я реализовал textField:shouldChangeCharactersInRange:replacementString:, но когда я ввожу китайские слова из списка слов, который появляется сверху клавиатуры после нажатия нескольких клавиш, метод textField:shouldChangeCharactersInRange:replacementString: не срабатывает.

Есть идеи?

1 Ответ

2 голосов
/ 18 января 2011

Обходной путь, который вы можете использовать, заключается в использовании:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil];

, затем в вашей функции:

- (void)textChanged:(NSNotification *)notification{
  //remove observer
  [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextViewTextDidChangeNotification object:nil];

  //change your textfield's value here e.g.
  myTextField.text = [MyUtils removeNonAsciiChar:myTextField.text];

  //add observer again
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil];
}

Обратите внимание, что это более затратно, поскольку вы будете заменять всю строкукаждый раз, но это должно быть хорошо, если вы не ожидаете очень длинную строку.

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