¿Cómo subclamo UITextField y anulo drawPlaceholderInRect para cambiar el color del marcador de position

Tengo un 3 UITextField con set de text de marcador de position. En uno de los UITextField , quiero que el text del marcador de position sea rojo.

Ahora, después de search en Google, parece que la mejor manera de hacerlo es subclass UITextField y anular drawPlaceholderInRect .

¿Cómo hago para subclassar y anular drawPlaceholderInRect ? No he encontrado ningún ejemplo de código o tutoriales sobre esto y soy nuevo en el desarrollo de Object-C y iOS, por lo que resulta complicado resolverlo.

Responder:

Se creó una nueva class objective-c llamada CustomUITextFieldPlaceholder que UITextField . En CustomUITextFieldPlaceholder.m coloque el siguiente código

  @implementation CustomUITextFieldPlaceholder - (void)drawPlaceholderInRect:(CGRect)rect { // Set colour and font size of placeholder text [[UIColor networkingColor] setFill]; [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]]; } @end 

Para implementar lo anterior en su proyecto

 #import "CustomUITextFieldPlaceholder.h" 

y

 IBOutlet CustomUITextFieldPlaceHolder *txtName; 

Nota: Esto funciona y creo que es una práctica correcta, pero no la he probado completamente. Espero que este ejemplo ayude a otros en mi situación.

Editar:

Cambiado

 [[UIColor networkingColor] setFill]; 

para

 [[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill]; 

De modo que pude establecer la opacidad al 70% para imitar el marcador de position pnetworkingeterminado.

Para responder a una pregunta específica, así es como funciona la subclass:

 // CustomTextField.h @interface CustomTextField : UITextField { } @end 

A continuación, se explica cómo anular el método:

 @implementation - (CGRect)placeholderRectForBounds:(CGRect)bounds { return CGRectMake(x,y,width,height); } @end 

Sin embargo, no creo que ese sea el método que desea anular. Creo que esto es lo que estás buscando:

 @implementation - (void)drawPlaceholderInRect:(CGRect)rect { // Your drawing code. } @end 

Subclasss no cambiará el color. He presentado un trabajo por aquí.

UITextField color de fuente de marcador de position blanco iOS 5?

 [yourTextfield setValue:[UIColor colorWithRed:62.0/255.0f green:62.0/255.0f blue:62./255.0f alpha:1.0f] forKeyPath:@"_placeholderLabel.textColor"]; 

Supongo que esto sería útil