텍스트 필드에서 유효성 검사에 걸리면 문자 색상을 빨간색으로 밑줄을 그립니다.
7642 단어 UIKitSwift양식밸리데이션UITextField
이런 느낌의 ↓ 텍스트 필드를 만들어 보았습니다.
코드
UITextField
를 계승한 클래스에 isValid
를 갖게 하는 형태로 해 보았습니다.import UIKit
class FormTextField: UITextField {
private var validatorLayer: CALayer!
var isValid = true {
didSet {
validatorLayer.isHidden = isValid
validatorLayer.frame = CGRect(x: 0, y: self.frame.height - 2, width: self.frame.width, height: 2)
textColor = isValid ? .black : .red
}
}
override init(frame: CGRect) {
super.init(frame: frame)
didInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
didInit()
}
private func didInit() {
// バリデーション用の下線
validatorLayer = CALayer()
validatorLayer.backgroundColor = UIColor.red.cgColor
validatorLayer.isHidden = true
layer.addSublayer(validatorLayer)
}
}
Storyboard에서 텍스트 필드를 설정하는 경우 클래스 이름을
FormTextField
로 두는 것을 잊지 마십시오!이것으로
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: FormTextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
textField.addTarget(self, action: #selector(handleTextField(_:)), for: .editingChanged)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func handleTextField(_ textField: FormTextField) {
// バリデーション例として20文字以内であるかチェック
guard let text = textField.text else { return }
textField.isValid = text.characters.count < 20
}
}
OK입니다!
샘플
샘플은 여기입니다!
htps : // 기주 b. 코 m / 케이 세이 1092 / 푸 rm 푸에 ldP 등 c 치세
Reference
이 문제에 관하여(텍스트 필드에서 유효성 검사에 걸리면 문자 색상을 빨간색으로 밑줄을 그립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keisei_1092/items/dd76dc6b31b05d99ee79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)