2010-02-03 24 views

risposta

2

Se si sviluppa su Mac OS X, allora si può provare il metodo setInsertionPointColor:. Vedere il riferimento NSTextView per ulteriori dettagli.

+0

Sì, l'ho provato utilizzando come: [addNewCategoryTextField setInsertionPointColor: [UIColor redColor]]; Ma sto ricevendo l'avviso come: UITextField potrebbe non rispondere a -setInsertionPointColor – monish

+0

E quando ho usato la funzione come: [addNewCategoryTextField setInsertionPointColor: [NSColor redColor]]; Un errore viene generato come NSColor non dichiarato utilizzato nella funzione. – monish

+1

Questo era parte della mia risposta: questo messaggio si applica solo a Mac OS X, non all'iPhone. Nella tua domanda, non hai specificato la piattaforma su cui stai sviluppando. Quindi ho pensato che fosse Mac OS X ... –

14

In iOS, UITextfield ha una proprietà textInputTraits. Una delle proprietà private di UITextInputTraits è insertionPointColor.

Perché è una proprietà non documentata, l'impostazione di un colore personalizzato probabilmente otterrete la vostra applicazione rifiutata da App Store. Se questo non è un problema, questo dovrebbe funzionare:

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor] 
              forKey:@"insertionPointColor"]; 
+0

Se non è documentato (privato), allora sei quasi sicuro di essere rifiutato da Apple. –

+0

Qualcuno ha provato questo e ottenuto un rifiuto da Apple? – Klaas

+1

Funziona alla grande in iOS 6. In iOS 7 usa il colore della tinta. Ti farò sapere se l'app viene rifiutata, ma altri hanno utilizzato questo trucco senza alcun problema. – phatmann

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

Con iOS 7 si può semplicemente cambiare tintColor proprietà del UITextField. Questo influenzerà sia il colore del cursore del testo che il colore di evidenziazione della selezione del testo.

È possibile farlo in codice ...

textField.tintColor = [UIColor redColor]; 

... o in Interface Builder:

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

Si può anche fare questo per tutti i campi di testo nella vostra applicazione utilizzando il proxy UITextField aspetto:

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

Di seguito sono riportati gli screenshot del simulatore che mostrano l'aspetto di un campo di testo iOS 7 altrimenti normale con la tinta impostata su rosso.

Testo cursore screenshot:

Text cursor screenshot

selezione Testo screenshot:

Text selection screenshot

+8

Stranamente per me NON FUNZIONA se lo si imposta nel builder dell'interfaccia: sospetto che l'elemento mostrato sia per UIView stesso, "non" gli aspetti del campo di testo in sé. – Fattie

+1

Uguale a @Joe Blow, funziona solo se lo si imposta programmaticamente. Inoltre, non stava funzionando anche sul simulatore, solo su un dispositivo reale. Strano – tbaranes

1

approccio di Durgesh funziona.

Ho utilizzato anche queste soluzioni KVC molte volte. Nonostante sembri non documentato, ma funziona. Francamente, non si usano i metodi privati ​​ qui - solo la codifica dei valori-chiave che è legale.

E 'drasticamente diverso da [addNewCategoryTextField textInputTraits].

P.S. Ieri la mia nuova app è apparsa su AppStore senza alcun problema con questo approccio. E non è il primo caso quando uso KVC nel modificare alcune proprietà di sola lettura (come navigatonBar) o private ivars.

+1

@Sathish In realtà, è una risposta! varrebbe la pena se avesse postato un commento? –

Problemi correlati