web-dev-qa-db-fra.com

Changer la couleur du curseur dans UITextField

Comment puis-je changer la couleur du curseur dans ma UITextField?

37
monish

Avec iOS 7, vous pouvez simplement changer la propriété tintColor de la UITextField. Cela affectera à la fois la couleur du curseur de texte et la couleur de surbrillance de la sélection de texte.

Vous pouvez le faire dans le code ...

textField.tintColor = [UIColor redColor];

... 

Dans Swift 4:

textField.tintColor = UIColor.red

... ou dans Interface Builder:

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

Vous pouvez également le faire pour tous les champs de texte de votre application à l'aide du proxy d'apparence UITextField:

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

Dans Swift 4:

UITextField.appearance().tintColor = UIColor.red

Vous trouverez ci-dessous des captures d'écran du simulateur montrant à quoi ressemble un champ de texte iOS 7 ordinaire avec sa teinte réglée sur rouge.

Capture d'écran du curseur de texte:

Text cursor screenshot

Capture d'écran de sélection de texte:

Text selection screenshot

87
Cap

Dans iOS, UITextfield a une propriété textInputTraits. Une des propriétés privées de UITextInputTraits est insertionPointColor.

Comme il s'agit d'une propriété non documentée, la définition d'une couleur personnalisée entraînera probablement le rejet de votre application depuis l'App Store. Si cela ne vous préoccupe pas, cela devrait fonctionner:

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

Si vous développez sur Mac OS X, vous pouvez alors essayer la méthode setInsertionPointColor:. Voir NSTextView reference pour plus de détails.

2
Laurent Etiemble

L'approche de Durgesh fonctionne.

J'ai aussi souvent utilisé de telles solutions KVC… __. Malgré que cela semble être non documenté, mais cela fonctionne. Franchement, vous n’utilisez ici aucune méthode privée, mais uniquement un codage clé-valeur qui est légal.

Il est radicalement différent de [addNewCategoryTextField textInputTraits].

P.S. Hier, ma nouvelle application est apparue sur l'AppStore sans aucun problème avec cette approche. Et ce n'est pas le premier cas lorsque j'utilise KVC pour modifier certaines propriétés en lecture seule (telles que navigatonBar) ou des propriétés privées.

2
malex

Pour changer la cursorcolor dans l'application pour UITextField/UITextView, le proxy de présentation peut également être utilisé comme ci-dessous,

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