Tengo un 3 UITextField
con un conjunto de texto de marcador de posición. En uno de los UITextField
, quiero que el texto del marcador de posición sea rojo.Cómo puedo subclase UITextField y anulo drawPlaceholderInRect para cambiar el color de marcador de posición
Ahora, después de googlear, parece que la mejor manera de hacer esto es subclase UITextField y anular drawPlaceholderInRect
.
¿Cómo hago para crear subclases y anular drawPlaceholderInRect
? No he encontrado ningún ejemplo de código o tutorial sobre esto y soy nuevo en el desarrollo de Object-c y iOS, por lo que resulta difícil resolverlo.
Respuesta:
creado una nueva clase Objective-C, que se llama CustomUITextFieldPlaceholder
subclase UITextField
. En CustomUITextFieldPlaceholder.m
poner el siguiente código
@implementation CustomUITextFieldPlaceholder
- (void)drawPlaceholderInRect:(CGRect)rect {
// Set colour and font size of placeholder text
[[UIColor redColor] 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 la práctica correcta, sin embargo tengo no completamente probado. Espero que este ejemplo ayude a otros en mi situación.
Editar:
Cambiado
[[UIColor redColor] setFill];
para
[[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill];
para que pudiera establecer la opacidad al 70% para imitar marcador de posición por defecto.
subclases y anulando ese método no le ayudará a cambiar el color de fuente, que sólo permite personalizar donde se muestra el marcador de posición. –
quizás pueda intentar anular este método de delegado - '(void) drawPlaceholderInRect: (CGRect) rect' – Hisenberg