2011-01-17 3 views
2

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

Любые идеи?

ответ

2

Обходной вы можете сделать, это использовать:

[[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]; 
} 

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