web-dev-qa-db-ja.com

カスタムテキストフィールドの背景色とテキストの色を変更する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
    }

}
12
Arvin Jayanake

documentation に従って、必要なUIControlイベントのターゲットとしてselfを追加します

そこではEditingDidBeginなどのコントロールイベントがあります。

このようなもの:

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

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
}

ストーリーボードまたはプログラムでテキストフィールドのデリゲートを設定することを忘れないでください。

編集:
コードを短縮し、Swift 3

10
Eendje

テキストフィールドを選択->「アイデンティティーインスペクター」アイコンをクリック->プラスボタン「ユーザー定義ランタイム属性」をクリック->「キーパス」フィールドにこのテキスト「_placeholderLabel.textColor」を追加->「タイプ」「色」を選択値の色を設定します。 Please check the images in detail

1
HafizAnser