Erstellen Sie UITextField mit einem statischen und zugewiesenen Präfix

Ich würde gerne eine machenUITextField, die ein statisches Präfix hat und dass der Benutzerkann nicht bearbeiten oder löschen, was gleichzeitig auch mit einer hellgrauen Schriftfarbe belegt wird.

Der bearbeitbare Teil des Textfeldes sollte immer in schwarzer Farbe angezeigt werden.

Ein Beispiel ist unten angegeben:

Es dient im Wesentlichen zum Eingeben eines Benutzernamens mit einer ständig vorangestellten Domäne.

Ich habe es bereits mit dem versuchttextFieldShouldClear undtextField:shouldChangeCharactersInRange:replacementString: delegiere Methoden zusammen mitNSMutableAttributedString, aber ich konnte es einfach nicht knacken:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSMutableAttributedString *text = [textField.attributedText mutableCopy];

    [text addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, 7)];

    if (textField.text.length > 7)
    {    
        [text addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(7, textField.attributedText.length - 7)];
    }
    [text addAttribute:NSFontAttributeName value:[UIFont gothamFontForSize:textField.font.pointSize andWeight:kGothamLight] range:NSMakeRange(0, textField.attributedText.length)];


    return range.location > 6;
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"kombit\\"];
    [text addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, 7)];
    [text addAttribute:NSFontAttributeName value:[UIFont gothamFontForSize:textField.font.pointSize andWeight:kGothamLight] range:NSMakeRange(0, text.length)];
    textField.attributedText = text;

    [textField setSelectedTextRange:[textField textRangeFromPosition:[textField endOfDocument] toPosition:[textField endOfDocument]]];

    return NO;
}

Ich bin sicher, dass jemand schon etwas Ähnliches gemacht hat.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage