Ich habe ein UITextField, und ich möchte es nicht editierbare Zeichen geben. Zum Beispiel habe ich "Hello..."
, und ich möchte der Benutzer in schreiben zwischen o
und .
wie "Hello userTypedStuff..."
UITextField - nicht bearbeitbare vorangestellte Zeichen sowohl am Anfang als auch am Ende
ich diesen Ansatz verwendet, aber das mit, kann der Benutzer Longpress den Anfang und zum Beispiel in die Position innerhalb Hallo gehen. Somit kann der Benutzer mit den vorangestellten Zeichen umgehen.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let protectedRange = NSMakeRange(0, 5)
let intersection = NSIntersectionRange(protectedRange, range)
if intersection.length > 0 {
return false
}
if range.location == 12 {
return true
}
if range.location + range.length > 12 {
return false
}
return true
}
Wie kann ich etwas wie 'uneditable erste 5 Zeichen und letzte 3 Zeichen' einrichten?
Edit: Die Text zentrierte Mitte des UITextField und bildet über einem UILabel. Wenn ich jedoch textField die Breite der Beschriftung gebe, wird textField nicht breiter. Daher gab ich die Breite der Breite an. Gibt es eine Möglichkeit, ich kann UILabel an beiden Enden mit Hello
und ...
separat erstellen, und TextField (mit Text ausgerichtetem Zentrum) in der Mitte, die automatisch Breite streckt?
Edit 2:
Wenn ich meine Textview mit zwei statischen UILabels auf beiden Seiten haben, können, dass eine Abhilfe sein. Dieses Mal wird das UITextField UILabels jedoch nicht auf Seiten schieben, wenn der Benutzer beginnt, den Text einzugeben. Das TextField-Center textAligned. Wenn ich ihm beim Erstellen eine konstante Breite gebe (programmatisch mit CGRectMake
), wird seine Breite nicht breiter, wenn der Benutzer eingibt. Also gab ich ihm die Breite der Ansicht. Gibt es eine Möglichkeit, die TextField-Breite automatisch zu strecken, wenn ein Benutzertyp die UILabels an den Seiten drückt?
"Hello" [textfield] "..."
uilabel uilabel
Ich glaube, Sie in die richtige Richtung gehen, nur, dass Sie mehrere Bedingungen in shouldChangeCharactersInRange zu verwenden und vielleicht textfieldshouldbegingediting Funktion –
Vielleicht verwenden Sie einfach eine Bezeichnung für statischen Text und für den Rest verwenden, um ein Textfeld –
@AhmadIshfaq Die UITextField ist programmatisch verwenden und das textAlign ist zentriert. Wie kann ich links und rechts einen statischen Text hinzufügen und die Breite des UITextFields als Benutzertypen erweitern? Ich setze es über das Label und konnte die Breite nicht erweitern, nachdem ich die Breite des Labels angegeben hatte. Stattdessen gab ich dem UITextField die Breite der Ansicht. Daher bin ich mir nicht sicher, wie ich ein Label mit meinen Präfixen auf der linken Seite erstellen und schreiben und verschieben kann, wenn der Benutzer eingibt. Können Sie bitte mehr Details geben? – senty