2011-01-17 6 views
2

Ich versuche, Chinesisch (oder anders, alle Nicht-ASCII-Zeichen), um zu verhindern Eingabe in ein UITextField zu sein. Wie in anderen Beiträgen gesehen, implementiert ich textField:shouldChangeCharactersInRange:replacementString:, aber wenn ich chinesische Wörter aus der Wortliste-Sache ein, die auf der Oberseite der Tastatur erscheint, nachdem Sie ein paar Tasten drücken, die textField:shouldChangeCharactersInRange:replacementString: Methode zündet nicht.Umgang mit Nicht-ASCII-Zeichen in Textfield: shouldChangeCharactersInRange: replacementString:

Irgendwelche Ideen?

Antwort

2

Eine Abhilfe Sie ergreifen können, ist zu verwenden:

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

dann in Ihrer Funktion:

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

ist jedoch zu beachten, dass dies teurer ist, da Sie die gesamte Zeichenfolge jedes Mal ersetzt wird, aber es sollte in Ordnung sein, wenn Sie nicht eine sehr lange Zeichenfolge erwarten.

Verwandte Themen