Wie funktioniert das Verfahren "shouldChangeTextInRange" und "stringByReplacingCharactersInRange" zu arbeiten?
Ich würde gerne wissen, die arbeiten des folgenden code.
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
return !([newString length] > 10);
}
Was bedeutet "stringByReplacingCharactersInRange" zu tun? Und wie funktioniert die oben genannte Methode die Anzahl der Zeichen begrenzen, die eingegeben werden können in den textField?
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
textField:shouldChangeCharactersInRange:replacementString:
ist UITextFieldDelegate Methode, die aufgerufen wird, jederzeit Textfeld den Inhalt zu ändern (Eingabe, löschen, Ausschneiden oder einfügen von text in das text-Feld), fragt die Delegierten, ob Sie es zulassen will das ändern.stringByReplacingCharactersInRange:withString:
ist ein NSString-Instanz-Methode, die genau das tut, was es sagt, ersetzt Sie text im aktuellen string mit einem anderen string, erstellen Sie eine neue Zeichenfolge.Den code, den Sie haben, der prüft, ob der string das wäre ein Ergebnis dieses Wandels ist länger als 10 Zeichen, und wenn es ist, delegieren zurück
NO
- und text-Feld Inhalt wird sich nicht ändern. Wenn der string 10 Zeichen oder weniger, Delegierter zurückYES
- und text-Feld den Inhalt ändern, um die gleiche Zeichenfolge ein, die Sie innewString
.NSRange
Struktur mit index der Start-Zeichen und die Länge des Teils der Zeichenfolge, die ersetzt werden. Wenn der Benutzer die Eingabe von text-Bereich.Standort wird index des letzten Zeichens + 1, und die Reichweite.wird die Länge 1. Wenn der Benutzer das löschen markierten text-Bereich.Standort wird der index des ersten markierten Zeichens und die Reichweite.Länge Anzahl der Zeichen, die markiert sind.shouldChangeTextInRange:replacementString:
ist nicht einUITextFieldDelegate
Methode, es ist eineUITextInput
- Protokoll optionale Methode.textField:shouldChangeCharactersInRange:replacementString
ist dieUITextFieldDelegate
Methode. Aktualisierte Antwort, um dies zu reflektieren.