Cambiar el color del cursor en UITextField

¿Cómo puedo cambiar el color del cursor en mi UITextField ?

Con iOS 7 puedes simplemente cambiar la propiedad tintColor del UITextField . Esto afectará tanto el color del cursor de texto como el color de resaltado de selección de texto.

Puedes hacer esto en código …

 textField.tintColor = [UIColor redColor]; 

… o en el Interface Builder:

captura de pantalla que muestra cómo modificar el tinte de un campo de texto en el generador de interfaz

También puede hacer esto para todos los campos de texto en su aplicación usando el proxy de apariencia UITextField :

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

A continuación se muestran capturas de pantalla del simulador que muestran lo que parece un campo de texto iOS 7 ordinario con su tinte configurado en rojo.

Captura de pantalla del cursor de texto:

Captura de pantalla del cursor de texto

Captura de pantalla de selección de texto:

Captura de pantalla de selección de texto

En iOS, UITextfield tiene una propiedad textInputTraits . Una de las propiedades privadas de UITextInputTraits es insertionPointColor .

Debido a que es una propiedad no documentada, la configuración de un color personalizado probablemente hará que su aplicación sea rechazada de la tienda de aplicaciones. Si eso no es una preocupación, esto debería funcionar:

 [[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor] forKey:@"insertionPointColor"]; 
 [[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"]; 

Si está desarrollando en Mac OS X, puede probar el método setInsertionPointColor: . Vea la referencia NSTextView para más detalles.

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 encoding de valor clave que es legal.

Es drásticamente diferente de [addNewCategoryTextField textInputTraits].

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.

Para cambiar el color del cursor toda la aplicación para UITextField/UITextView , el proxy de apariencia también se puede usar de la siguiente manera:

 UITextField.appearance().tintColor = .green UITextView.appearance().tintColor = .green