delegate ios colors cursor uitextfield

ios - delegate - Cambiar UITextField y UITextView Cursor/Caret Color



func textfield (11)

Me pregunto si cambiar el color del cursor / cursor en un UITextField (y UITextView si es la misma respuesta) en iOS. He visto respuestas para el desarrollo de OSX, pero nada para iOS.

¿Esto es posible?


Con iOS7 puedes simplemente cambiar el tinteColor del campo de texto


El enfoque de Durgesh funciona.

También utilicé soluciones de KVC muchas veces. A pesar de que parece ser indocumentado, pero funciona. Francamente, no utiliza ningún método privado aquí, solo codificación de valor clave que es legal.

PD. Ayer, mi nueva aplicación apareció en AppStore sin ningún problema con este enfoque. Y no es el primer caso cuando uso KVC para cambiar algunas propiedades de solo lectura (como navigatonBar) o ivars privadas.


Esto funcionó para mí en forma rápida:

UITextField.tintColor = UIColor.blackColor()

También puede establecer esto en el guión gráfico: https://.com/a/18759577/3075340


Para la versión de Interface Builder con Swift

@IBOutlet weak var tvValue: UITextView! { didSet { tvValue.tintColor = .black } }


Si tiene como objetivo iOS 7+, esto se ha hecho mucho más fácil. Simplemente cambie el tintColor del campo con un cursor usando el proxy de apariencia y se aplicará en toda la aplicación:

Swift 3.0:

UITextField.appearance().tintColor = .black

C objetivo:

[[UITextField appearance] setTintColor:[UIColor blackColor]];

La misma respuesta aplica para una UITextView individual:

Swift 3.0:

myTextField.tintColor = .black

C objetivo

[myTextField setTintColor:[UIColor blackColor]];



Un enfoque más general sería establecer el color de la apariencia de UIView''s tintColor.

UIColor *myColor = [UIColor purpleColor]; [[UIView appearance] setTintColor:myColor];

Tiene sentido si está usando muchos elementos de UI predeterminados.


Intenta, funciona para mí.

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];


Nota: Esta respuesta está desactualizada y solo debe usarse para el desarrollo anterior a iOS 7. Vea otras respuestas para una solución de 1 línea usando el proxy de apariencia en iOS 7.

Llegué a esta pregunta después de enfrentar el mismo problema en un proyecto en el que estaba trabajando.

Logré crear una solución que será aceptada por el equipo de revisión de AppStore ya que no usa ninguna API privada existente.

Creé un control llamado DGTextField que amplía UITextField.


Swift 3:

UITextField.appearance().tintColor = UIColor.black UITextView.appearance().tintColor = UIColor.black


yourTextField.tintColor = [UIColor whiteColor];

Funciona si lo configura en código, porque de alguna manera el disparador de color no lo hace en el Constructor de interfaz (Xcode 6.1.1). Se adapta bien sin necesidad de cambiar ningún proxy de apariencia.