Подтвердить что ты не робот

Изменение цвета фона текстового поля и цвета текста IOS Swift

Я использую следующий класс текстового поля для изменения внешнего вида текстового поля. Теперь мне нужно изменить цвет фона текстового поля, цвет текста и цвет держателя места, когда пользователь начнет редактирование и закончит редактирование текстового поля. Как это сделать, используя этот класс.

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
    }

}
4b9b3361

Ответ 1

Добавьте себя как цель для событий UIControl, которые вам нужны в соответствии с documentation

Там у вас есть контрольные события для EditingDidBegin и т.д.

Что-то вроде этого:

self.addTarget(self, action: "myFunc", forControlEvents: UIControlEvents.EditingDidBegin);

Ответ 2

В вашем классе CustomTextField вы можете добавить наблюдателя свойств:

var change: Bool = false {
    didSet {
        textColor = change ? .yellow : .black
        backgroundColor = change ? .blue : .white
    }
}

и в вашем ViewController:

func textFieldDidBeginEditing(textField: UITextField) {
    customTextField.change = true
}

func textFieldDidEndEditing(textField: UITextField) {
    customTextField.change = false
}

Не забудьте установить делегат вашего текстового поля, в раскадровку или программно.

EDIT:
Сокращен код и обновлен для Swift 3

Ответ 3

Выберите текстовое поле → щелкните значок "Инспектор идентификации" → нажмите кнопку "Плюс" "Пользовательские атрибуты среды выполнения" → добавьте этот текст "_placeholderLabel.textColor" в поле "Ключевой путь" → выберите "Тип" "Цвет" и установите значение цвета. Please check the images in detail