J'ai un UITextField
avec un espace réservé. Lorsque l'utilisateur souhaite soumettre le formulaire et qu'il/elle n'a pas tapé dans le champ de texte, je souhaite que la couleur du texte de l'espace réservé devienne rouge. Voici mes questions:
Je sais que je peux remplacer la méthode drawPlaceholderInRect:
dans une sous-classe de UITextField
. Mais si je le faisais, le texte serait toujours rouge et, comme je l'ai écrit auparavant, j'aimerais qu'il devienne rouge en fonction d'une action définie par l'utilisateur.
La seule solution à laquelle je peux penser est d'utiliser un texte "par défaut" pour mon UITextField
(le texte de l'espace réservé), de l'afficher en gris clair tant que l'utilisateur n'a pas saisi quoi que ce soit et de l'afficher en rouge lorsque j'en ai besoin. En d'autres termes, je voudrais simplement me moquer du comportement de l'espace réservé. Mais bien sûr, ce n'est pas très élégant.
Des idées?
quand l'utilisateur n'écrit rien dans textfield. puis mettez ce texte en tant que texte textfield.text et changez la couleur de la police.
Il suffit de regarder ceci:
Digdog Dig - Change la couleur de l’espace réservé de UITextField sans la sous-classer
[self.MyTextField setValue:[UIColor darkGrayColor] forKeyPath:@"_placeholderLabel.textColor"];
Vous pouvez modifier la couleur du texte d'espace réservé en n'importe quelle couleur à l'aide du code ci-dessous. Essayez ceci.
UIColor *color = [UIColor lightTextColor];
YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];
comme la réponse de verklixt mais sans accéder à une API privée ni utiliser UIAppearance
:
[[UILabel appearanceWhenContainedIn:[UITextField class], nil] setTextColor:[UIColor darkGrayColor]];
(testé sur les versions 5.0 à 7.1)
Vous pouvez définir le texte d’espace réservé comme chaîne NSAttributedString à l’aide de this property
NSAttributedString *coloredPlaceholder = [[NSAttributedString alloc] initWithString:@"I am a placeholder string" attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
[self.textField setAttributedPlaceholder:coloredPlaceholder];
Nous pouvons accéder à l’étiquette d’emplacement réservé à l’aide de la clé path afin de pouvoir changer de couleur, c.-à-d.:
[self.textField setValue:[UIColor **"your color"**]
forKeyPath:@"_placeholderLabel.textColor"];
passer outre
-(void) drawPlaceholderInRect:(CGRect)rect {
[[UIColor darkGrayColor] setFill];
[[self placeholder] drawInRect:rect withFont:[UIFont fontWithName:@"Helvetica-Oblique" size:15.0]];
}
J'ai eu quelques difficultés à mettre en œuvre le changement de couleur de l'espace réservé. J'ai plutôt trouvé une autre solution qui fonctionne parfaitement pour moi.
//On button action change color to red
-(void)btnAction
{
// authentication for missing textfields
if ([textField_firstName.text isEqualToString:@""])
{
textField_firstName.textColor=[UIColor redColor];
textField_firstName.text=@"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" ])
{
textField_firstName.text=@"";
}
//change back to the text color you use
textField_firstName.textColor=[UIColor blackColor];
}