Danny의 iOS 컨닝페이퍼
article thumbnail
Published 2022. 12. 20. 20:36
[iOS/Swift] UITextField 설정 UIKit/Swift

텍스트 필드 여러 설정들

  1. 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                 // 편집 시 기존 텍스트필드값 제거?

 

  1. 키보드 관련
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 사용)

  1. NSLayoutConstraint 사용 시
  • view 세팅
    1. 플레이스 홀더로 사용할 Label을 만들어 줍니다.
    2. 레이아웃을 잡을 때 따로 변수 centerYAnchor를 생성해 준다 (고정시키면 안 됨)
  • 텍스트 필드 델리게이트 메서드 세팅
    1. textFieldDidBeginEditing (입력 시점)에서 centerYAnchor를 변경 및 폰트 사이즈 변경을 합니다
    2. textFieldDidEndEditing (입력이 끝난 시점) 다시 처음 값으로 변경을 합니다.

 

  1. SnapKit 사용 시 (편리하네요.)
    textfield 내부에 뷰가 한 개 더 있어서 SuperView를 업데이트시켜주면 됩니다. updateConstraints만 해주면 됩니다.

텍스트 필드 입력 못하도록 수정(잠금)


Padding 만들기 (공간 만들기)

위의 그림과 같이 좌측에 공백을 주는 방법입니다.

UITextField의 익스텐션

 

참고하면 더 좋은 블로그

 

Swift : 기초문법 [UITextField]

UITextField TextField는 기본적으로 다크 모드와 라이트 모드를 자동으로 구별한다. Text Input Traits Text 입력 type를 설정 Content Type semantic meaning을 나타냄. 이 프로퍼티를 사용하면, 사용자가 입력하는

seons-dev.tistory.com

 

[Swift] UITextField Left padding 넣어주기 !!

안녕하세요 :] 오늘 정리할 내용은 UITextField의 Text에 left padding 값을 주는 거예요. 보통 UITextField의 값을 입력할 때면 너무 왼쪽에 딱 붙어서 경계선과 글자의 구분이 애매하죠. 그래서 왼쪽에 약

developer-fury.tistory.com

 

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!