I'm using following custom text field class to change appearance of the text field. Now I need to change text field's background color, text color and place holder color, when user start editing and end editing the text field. How to do it, using this class.
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
}
}
Add self as a target for the UIControl events you need according to documentation
There you have control events for EditingDidBegin and such.
Something like this:
self.addTarget(self, action: "myFunc", forControlEvents: UIControlEvents.EditingDidBegin);
In your CustomTextField
class you can add a property observer:
var change: Bool = false {
didSet {
textColor = change ? .yellow : .black
backgroundColor = change ? .blue : .white
}
}
and in your ViewController:
func textFieldDidBeginEditing(textField: UITextField) {
customTextField.change = true
}
func textFieldDidEndEditing(textField: UITextField) {
customTextField.change = false
}
Don't forget to set the delegate of your textfield, in storyboard or programmatically.
EDIT:
Shortened the code and updated for Swift 3
Select the text field -> click "identity inspector" icon -> click on Plus button "user Defined runtime attributes" -> add this text "_placeholderLabel.textColor" in "key path" field -> choose the "Type" "color" and set the value color.