2010-02-03 22 views

Respuesta

2

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

+0

Sí Lo intenté usando como: [addNewCategoryTextField setInsertionPointColor: [UIColor redColor]]; Pero recibo la advertencia como: UITextField puede no responder a -setInsertionPointColor – monish

+0

Y cuando utilicé la función como: [addNewCategoryTextField setInsertionPointColor: [NSColor redColor]]; Se genera un error como NSColor no declarado uso en la función. – monish

+1

Eso fue parte de mi respuesta: este mensaje solo se aplica a Mac OS X, no al iPhone. En su pregunta, no ha especificado la plataforma en la que está desarrollando. Así que he supuesto que era Mac OS X ... –

14

En iOS, UITextfield tiene una propiedad de 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"]; 
+0

Si no está documentado (privado), es casi seguro que Apple lo rechazará. –

+0

¿Alguien ha intentado esto y recibió un rechazo de Apple? – Klaas

+1

Esto funciona muy bien en iOS 6. En iOS 7 usa el color del tinte. Le dejaré saber si la aplicación es rechazada, pero otros han utilizado este truco sin problemas. – phatmann

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

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

Usted puede hacer esto en el código ...

textField.tintColor = [UIColor redColor]; 

... o en el Interface Builder:

screenshot showing how to modify tint of a text field in interface builder

También puede hacer esto para todos los campos de texto en su aplicación utilizando el proxy de aspecto 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.

texto cursor captura de pantalla:

Text cursor screenshot

La selección de texto captura de pantalla:

Text selection screenshot

+8

Extraño para mí, NO FUNCIONA si lo configura en el generador de interfaz: sospecho que el elemento mostrado es para la propia UIView, "no" los aspectos del campo de texto per se. – Fattie

+1

Igual que @Joe Blow, funciona solo si lo configura programáticamente. Además, tampoco funcionaba en el simulador, solo en un dispositivo real. Strange – tbaranes

1

enfoque de Durgesh funciona.

También utilicé tales soluciones KVC muchas veces. A pesar de que parece no estar documentado, pero funciona. Francamente, aquí no usa ningún método privado , solo codificación de valores-clave que es legal.

Es drásticamente diferente de [addNewCategoryTextField textInputTraits].

P.S. 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.

+1

@Sathish De hecho, ¡es una respuesta! valdría la pena si ha publicado un comentario? –

Cuestiones relacionadas