J'utilise la classe de champ de texte personnalisée suivante pour modifier l'apparence du champ de texte. Maintenant, je dois changer la couleur d'arrière-plan, la couleur du texte et la couleur de l'espace réservé au champ de texte, lorsque l'utilisateur commence à éditer et termine l'édition du champ de texte. Comment le faire, en utilisant cette classe.
import Foundation
import UIKit
class CustomTextField: UITextField{
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//Border
self.layer.cornerRadius = 15.0;
self.layer.borderWidth = 1.5
self.layer.borderColor = UIColor.whiteColor().CGColor
//Background
self.backgroundColor = UIColor(white: 1, alpha: 0.0)
//Text
self.textColor = UIColor.whiteColor()
self.textAlignment = NSTextAlignment.Center
}
}
Ajoutez self en tant que cible pour les événements UIControl dont vous avez besoin selon documentation
Là vous avez des événements de contrôle pour EditingDidBegin et autres.
Quelque chose comme ça:
self.addTarget(self, action: "myFunc", forControlEvents: UIControlEvents.EditingDidBegin);
Dans votre classe CustomTextField
, vous pouvez ajouter un observateur de propriété:
var change: Bool = false {
didSet {
textColor = change ? .yellow : .black
backgroundColor = change ? .blue : .white
}
}
et dans votre ViewController:
func textFieldDidBeginEditing(textField: UITextField) {
customTextField.change = true
}
func textFieldDidEndEditing(textField: UITextField) {
customTextField.change = false
}
N'oubliez pas de définir le délégué de votre champ de texte, dans le storyboard ou par programme.
MODIFIER:
Raccourci le code et mis à jour pour Swift 3
Sélectionnez le champ de texte -> cliquez sur l'icône "inspecteur d'identité" -> cliquez sur le bouton Plus "attributs définis par l'utilisateur pour l'exécution" -> ajoutez ce texte "_placeholderLabel.textColor" dans le champ "chemin d'accès" -> choisissez la couleur "Type" et définir la valeur color.