Подтвердить что ты не робот

Измените цвет текста заполнителя UITextField

У меня есть UITextField с заполнителем. Когда пользователь хочет отправить форму, и он/она ничего не набрал в текстовом поле, я хотел бы, чтобы цвет текста заполнителя стал красным. Вот мои вопросы:

  • Будет ли это противоречить руководящим принципам пользовательского интерфейса Apple? Я не хочу, чтобы мое приложение было отклонено из-за таких мелких деталей.
  • Как бы я это сделал?

Я знаю, что могу переопределить метод drawPlaceholderInRect: в подклассе UITextField. Но если бы я это сделал, текст всегда был бы красным, и, как я писал ранее, я хотел бы, чтобы он стал красным в зависимости от пользовательского действия.

Единственное решение, о котором я могу думать, это использовать текст по умолчанию для моего UITextField (текст заполнителя), отображать его светло-серым цветом, пока пользователь ничего не набрал и не покажет его красным, если Мне это нужно. Другими словами, я просто высмеивал бы поведение замещающего. Но, конечно, это не очень элегантно.

Любые идеи?

4b9b3361

Ответ 1

когда пользователь ничего не пишет в текстовом поле. затем поместите этот текст как текст texttext.text и измените цвет шрифта.

Ответ 3

Вы можете изменить цвет текста Placeholder на любой цвет, используя приведенный ниже код. Просто попробуйте это.

UIColor *color = [UIColor lightTextColor];
YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];

Ответ 4

как ответ от verklixt, но без доступа к private api и с помощью UIAppearance:

[[UILabel appearanceWhenContainedIn:[UITextField class], nil] setTextColor:[UIColor darkGrayColor]];

(тестируется с 5.0 по 7.1)

Ответ 5

Мы можем получить доступ к ярлыку владельца места, используя ключевой путь, чтобы мы могли изменить цвет i.e.:

[self.textField setValue:[UIColor **"your color"**] 
                                  forKeyPath:@"_placeholderLabel.textColor"];

Ответ 6

Вы можете установить текст заполнителя как NSAttributedString, используя это свойство

NSAttributedString *coloredPlaceholder = [[NSAttributedString alloc] initWithString:@"I     am a placeholder string" attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
[self.textField setAttributedPlaceholder:coloredPlaceholder];

Ответ 7

переопределить

-(void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor darkGrayColor] setFill];
    [[self placeholder] drawInRect:rect withFont:[UIFont fontWithName:@"Helvetica-Oblique" size:15.0]];
}

Ответ 8

У меня возникли трудности с реализацией цветовой замены заполнителя, вместо этого я нашел другое решение, которое отлично работает для меня.

//On button action change color to red
-(void)btnAction
{
    // authentication for missing textfields
    if ([textField_firstName.text isEqualToString:@""])
    {
        textField_firstName.textColor=[UIColor redColor];
        [email protected]"Enter First Name";
    }
}

// in the delegate method of UITextField change the following 
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    //match the following string with above string and change the string to empty string on textfield click
    if ([textField_firstName.text isEqualToString:@"Enter First Name" ]) 
    {
        [email protected]"";
    }

    //change back to the text color you use
    textField_firstName.textColor=[UIColor blackColor];
}