안녕하세요, 개발감자입니다!
iOS 개발을 하다 보면 사용자로부터 입력받은 데이터가 올바른 형식인지 확인할 필요가 있습니다. 오늘은 UITextField를 사용하여 사용자가 입력한 이메일이 올바른 형식인지 확인하는 방법에 대해 소개하고자 합니다.
1. 이메일 형식 검사 함수 : isValidEmail
우선, 사용자로부터 입력받은 이메일 주소가 유효한 형식인지 확인하기 위해 아래의 isValidEmail 함수를 사용합니다. 이 함수는 정규 표현식을 활용하여 이메일 형식을 검증합니다.
// 이메일 형식 검사 함수
func isValidEmail(email: String) -> Bool {
let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex)
return emailPredicate.evaluate(with: email)
}
이메일 형식을 검증하는 이 함수는 입력받은 문자열이 이메일 형식에 맞는지 확인하고, 그 결과를 불리언 값으로 반환합니다. 이제 이 함수를 활용해 사용자가 UITextField에 입력한 값이 유효한 이메일 형식인지 실시간으로 확인해보겠습니다.
2. 텍스트 변경 감지 : textFieldDidChangeSelection
UITextField의 텍스트 변경을 감지하기 위해, 다음의 textFieldDidChangeSelection 함수를 사용합니다. 사용자가 텍스트 필드에 입력할 때마다 이 함수가 호출되어, 입력된 텍스트가 유효한 이메일 형식인지 확인하고 UI를 적절히 업데이트합니다.
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField == emailTextField {
guard let newText = textField.text else { return }
let isEmailValid = isValidEmail(email: newText)
if isEmailValid {
// 올바른 이메일 형식
emailTextField.layer.borderColor = UIColor.clear.cgColor
emailLabel2.textColor = .mpDarkGray
emailLabel2.text = "문의에 대한 답변을 이메일로 보내드려요."
completeCheck.emailError = true
} else {
// 잘못된 이메일 형식
emailTextField.layer.borderColor = UIColor.mpRed.cgColor
emailTextField.layer.borderWidth = 1.0
emailLabel2.textColor = .mpRed
emailLabel2.text = "이메일 형식이 올바르지 않습니다."
completeCheck.emailError = false
}
updateCompleteButtonState()
}
}
이 코드는 사용자가 입력한 이메일 주소가 유효한 경우, 텍스트 필드의 테두리 색상을 투명하게 하고, 안내 메시지를 표시합니다. 반대로 이메일 형식이 유효하지 않은 경우, 텍스트 필드의 테두리를 빨간색으로 변경하고 오류 메시지를 표시하여 사용자가 올바른
형식의 이메일을 입력하도록 유도합니다.
이 방법을 통해, 사용자 인터페이스의 사용성을 향상시키고, 애플리케이션에서 유효한 이메일 주소만을 수집할 수 있게 됩니다. 사용자로부터 올바른 형식의 데이터를 받는 것은 애플리케이션의 오류를 줄이고, 사용자 경험을 개선하는 데 중요한 부분입니다.
지금까지 개발감자였습니다!
'iOS > UIKIt' 카테고리의 다른 글
UIViewController와 관련 개념 정리: HIG, LifeCycle, ContainViewController, AppDelegate, MVC (0) | 2024.10.06 |
---|---|
[iOS/UIKit] UITextField와는 다른 UITextView 활용 방법과 차이점 (2) | 2024.03.06 |
[ iOS/UIkit ] UITableView로 마이페이지 구현하기 (0) | 2024.03.06 |
iOS 앱 개발: 탭바에 동그란 커스텀 버튼 추가하기 - 완벽 가이드 (1) | 2024.02.09 |
[iOS] MVVM 모델로 RxSwift API 연결하기 (0) | 2024.02.08 |