我正在尝试阻止中文(或其他所有非ascii字符)输入到UITextField中。正如其他帖子中所见,我实现了textField:shouldChangeCharactersInRange:replacementString:
,但是当我按下几个键后出现在键盘顶部的word-list-thing中输入中文单词时,textField:shouldChangeCharactersInRange:replacementString:
方法没有火。
有什么想法吗?
答案 0 :(得分: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];
}
但请注意,由于您每次都会更换整个字符串,因此费用会更高,但如果您不期待非常长的字符串,则应该没问题。