텍스트 필드에 입력된 값은 숫자로 입력하거나 문자로 입력해도 string임
정규식 - regular expression
1. 이메일
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
2. ID
let idRegEx = "[A-Za-z0-9]{5,13}"
3. 비밀번호
let pwRegEx = "[A-Za-z0-9!_@$%^&+=]{8,20}"
4. 닉네임
let nickRegEx = "[가-힣A-Za-z0-9]{2,7}"
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var EmailTextField: UITextField!
@IBOutlet weak var PasswordTextField: UITextField!
@IBOutlet weak var EmailError: UILabel!
@IBOutlet weak var PasswordError: UILabel!
var EmailErrorHeight: NSLayoutConstraint!
var PasswordErrorHeight: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
// 텍스트 필드의 값을 입력하거나 삭제할때 editingChanged로 받을수 있음
EmailTextField.addTarget(self, action: #selector(TextFieldEdited), for: .editingChanged)
PasswordTextField.addTarget(self, action: #selector(TextFieldEdited), for: .editingChanged)
EmailErrorHeight = EmailError.heightAnchor.constraint(equalToConstant: 0)
PasswordErrorHeight = PasswordError.heightAnchor.constraint(equalToConstant: 0)
}
@objc func TextFieldEdited(textField: UITextField) {
if textField == EmailTextField {
print("이메일 텍스트 필드 \(textField.text!)")
if isValidEmail(Email: textField.text) == true {
// .isActive = true 를 해야 활성화가 됨
// email 값 형식에 맞으면 높이 값을 0으로 설정
EmailErrorHeight.isActive = true
} else {
// 아니면 비활성화
EmailErrorHeight.isActive = false
}
} else if textField == PasswordTextField {
print("비밀번호 텍스트 필드 \(textField.text!)")
if isValidPassword(pw: textField.text) == true {
PasswordErrorHeight.isActive = true
} else {
PasswordErrorHeight.isActive = false
}
}
UIView.animate(withDuration: 0.1) {
self.view.layoutIfNeeded()
}
}
// 정규식 - regular expression
// 옵셔널 스트링으로 입력을 받아서 Bool 타입으로 리턴
func isValidEmail(Email: String?) -> Bool {
guard Email != nil else { return false }
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let pred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return pred.evaluate(with: Email)
}
func isValidPassword(pw: String?) -> Bool {
// 입력한 비밀번호가 8자 이하면 false
if let hasPassword = pw {
if hasPassword.count < 8 {
return false
}
}
return true
}
}
'Swift' 카테고리의 다른 글
버튼 관련 코드 (0) | 2021.02.24 |
---|---|
채팅 앱 구조의 이해와 테이블 뷰 활용 (0) | 2021.02.18 |
팝업 레이아웃 (0) | 2021.02.16 |
Switch (0) | 2021.02.16 |
커스텀 레이아웃을 스토리 보드와 연동 (0) | 2021.02.15 |