solución Las @etayluz 's es mejor (mi opinión), ya que no tiene que preocuparse acerca de la asignación de texto placeholder'a nuevo . Si tiene campos de texto personalizados en diferentes lugares de su aplicación y quiere que se comporten igual (ya que necesito en mi caso) se puede añadir este código a la clase de su campo de texto personalizado:
class CustomTextField: UITextField, UITextFieldDelegate {
private func setup() {
//do additional setup like attributedPlaceholder, inset, etc.
self.delegate = self
}
override func awakeFromNib() {
super.awakeFromNib()
setup()
}
// MARK: UITextFieldDelegate methods
func textFieldDidBeginEditing(textField: UITextField) {
textField.setValue(UIColor.clearColor(), forKeyPath: "_placeholderLabel.textColor")
}
func textFieldDidEndEditing(textField: UITextField) {
textField.setValue(UIColor.lightGrayColor(), forKeyPath: "_placeholderLabel.textColor")
}
}
Pero si es necesario tener métodos de UITextFieldDelegate específicos para textField individuo sí es necesario para poner en práctica esta lógica de forma individual:
class LoginViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var emailTextField: CustomTextField!
@IBOutlet weak var passwordTextField: CustomTextField!
override func viewDidLoad() {
super.viewDidLoad()
textFields = [emailTextField, passwordTextField]
for textField in textFields {
textField.delegate = self
}
// MARK: UITextFieldDelegate methods
func textFieldDidBeginEditing(textField: UITextField) {
textField.setValue(UIColor.clearColor(), forKeyPath: "_placeholderLabel.textColor")
}
func textFieldDidEndEditing(textField: UITextField) {
textField.setValue(UIColor.lightGrayColor(), forKeyPath: "_placeholderLabel.textColor")
}
}
En el segundo método, debe verificar que el campo de texto tenga un valor vacío o no? – KingofBliss
no. El texto del marcador de posición simplemente no es visible si hay texto "regular". –
Oh .. Sí, lo olvidé ... :) Gracias por la información .. – KingofBliss