Comment puis-je changer la couleur du curseur dans ma UITextField
?
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:
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:
Capture d'écran de sélection de texte:
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"];
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
Si vous développez sur Mac OS X, vous pouvez alors essayer la méthode setInsertionPointColor:
. Voir NSTextView reference pour plus de détails.
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.
Pour changer la cursor
color
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