objective-c - programación - versiones de objective c
Cambiar el color del cursor en UITextField (6)
¿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:
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 de selección 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.
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.
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"];
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
Si está desarrollando en Mac OS X, puede probar el método setInsertionPointColor:
. Vea la referencia NSTextView para más detalles.
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];