반응형
텍스트 필드 여러 설정들
- UI 관련
textField.frame.size.height = 22 // 프레임 높이
textField.borderStyle = .roundedRect // 테두리 스타일
textField.autocorrectionType = .no // 자동 수정 활성화 여부
textField.spellCheckingType = .no // 맞춤법 검사 활성화 여부
textField.autocapitalizationType = .none // 자동 대문자 활성화 여부
textField.placeholder = "이메일 입력" // 플레이스 홀더
textField.clearButtonMode = .always // 입력내용 한번에 지우는 x버튼(오른쪽)
textField.clearsOnBeginEditing = false // 편집 시 기존 텍스트필드값 제거?
- 키보드 관련
textField.returnKeyType = .done // 키보드 엔터키(return, done... )
textField.keyboardType = UIKeyboardType.emailAddress // 키보드 타입
textField.becomeFirstResponder() // 화면에서 첫번째로 반응(포커스 시킴)
textField.resignFirstResponder() // 첫번째 반응을 중지
TextField 델리게이트 패턴
- 사용법
// 델리게이트 패턴: 객체와 객체간의 커뮤니케이션 (의사소통을 한다)
// 즉. 뷰컨트롤러 대신에 일을 수행하고 그 결과값을 전달할 수 있습니다.
1) UITextFieldDelegate //프로토콜 채택, 바로 사용하는 대신 확장으로 많이 사용합니다.
extension ViewController: UITextFieldDelegate {
}
// 텍스트필드의 프로토콜을 사용하기 위해선 사용할 객체를 연결 시켜줘야 한다.(위임)
2) textField.delegate = self // 텍스트필드.대리자 = ViewController의 객체를 담는다
3) UITextFiel의 메서드들 사용하여 코드 작성합니다.
- textField 메서드
// 입력이 끝날때 호출 (끝낼지 말지를 허락)
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
return true
}
// 입력이 실제 끝날때 호출 (시점)
func textFieldDidEndEditing(_ textField: UITextField) {
textField.text = "입력을 마쳤습니다."
}
// 입력을 시작할때 호출 (시작할지 말지를 물어보는 것)
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return true
}
// 입력이 시작되면 호출 (시점)
func textFieldDidBeginEditing(_ textField: UITextField) {
}
// 내용을 삭제할 때 호출 (삭제할지 말지를 물어보는 것) .clearButtonMode과 연관
func textFieldShouldClear(_ textField: UITextField) -> Bool {
return true
}
// 한글자 한글자 입력/지워질때마다 호출 ---> true(입력 허락), false(입력 거부)
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print("텍스트필드의 입력값: \(string)")
return true
}
// 엔터키가 눌러졌을때 호출 (동작할지 말지 물어보는 것)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return true
}
// 입력이 끝날때 호출 (끝낼지 말지를 물어보는 것)
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
print("입력을 마쳤습니다")
return true
}
Cheat Sheet
리턴 버튼 누를 때 다음 텍스트 필드로 이동
(becomeFirstResponder
, resignFirstResponder
키워드)
텍스트 필드에서 글자 수 제한 및 숫자만 사용 (feat. 백스페이스)
플레이스 홀더 동적으로 움직이게 만들기 (Label 사용)
NSLayoutConstraint
사용 시
- view 세팅
- 플레이스 홀더로 사용할 Label을 만들어 줍니다.
- 레이아웃을 잡을 때 따로 변수
centerYAnchor
를 생성해 준다 (고정시키면 안 됨)
- 텍스트 필드 델리게이트 메서드 세팅
textFieldDidBeginEditing
(입력 시점)에서centerYAnchor
를 변경 및 폰트 사이즈 변경을 합니다textFieldDidEndEditing
(입력이 끝난 시점) 다시 처음 값으로 변경을 합니다.
SnapKit
사용 시 (편리하네요.)textfield
내부에 뷰가 한 개 더 있어서SuperView
를 업데이트시켜주면 됩니다.updateConstraints
만 해주면 됩니다.
텍스트 필드 입력 못하도록 수정(잠금)
Padding 만들기 (공간 만들기)
위의 그림과 같이 좌측에 공백을 주는 방법입니다.
UITextField
의 익스텐션
참고하면 더 좋은 블로그
반응형
'UIKit > Swift' 카테고리의 다른 글
[iOS/Swift] 디버깅을 통해 메모리 누수를 찾아보자(Debug, Memory Leaks) (0) | 2023.02.17 |
---|---|
[iOS/Swift] MVVM 패턴의 Data Binding에 대해서 알아보자! (Closure, Observable, Combine) (0) | 2023.02.14 |
[iOS/Swift] UINavigationBar 사용 방법 (0) | 2023.02.07 |
[iOS/Swift] UINavigationController 살펴보기 (0) | 2023.02.06 |
[iOS/Swift] 델리게이트 패턴 (Delegate) (0) | 2022.12.23 |