일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Chart
- alamofire
- androidstudio
- Apple
- Swift
- 그래프
- button
- charts
- PyQt5
- Xcode
- library
- Python
- Android
- Chrats
- modal
- UITableView
- 라이브러리
- 어플리케이션
- 개발자
- ui
- kotlin
- UIButton
- ios
- TableView
- Storyboard
- PyQt
- 개발
- cocoapods
- graph
- UIKit
Archives
- Today
- Total
Jiwift
[iOS/Swift] UITextField 글자수 제한, 글자수 세기 본문
반응형
UITextField의 글자수를 제한하고 개수를 표시하기 위한 로직 작성
20 자리를 기준으로 작성한 코드
self.nameTextField.delegate = self
글자수를 세기 위한 Textfield의 delegate를 설정
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// 기존 글씨 + 입력된 글씨 = text길이
guard let text = textField.text else { return false }
let newLength = text.utf16.count + string.utf16.count - range.length
// 글자수 세기
if newLength < 21 {
self.nameCountLabel.text = "\(newLength)/20"
}
// backspace 허용
if let char = string.cString(using: String.Encoding.utf8) {
let isBackSpace = strcmp(char, "\\b")
if isBackSpace == -92 {
return true
}
}
// 글자수 제한
if newLength > 20 {
return false
}
return true
}
}
1. delegate를 위해서 UITextfieldDelegate 채택
2. shouldChangeCharactersIn 사용
3. 글자수를 먼저 계산
4. 현재 20까지만 글자수를 업데이트
5. 백스페이스는 글자 제거를 위해서 예외처리
6. 글자수가 20을 넘어가면 false를 주어서 새로운 입력을 무시
반응형
'iOS Dev > UIKit' 카테고리의 다른 글
[iOS/Swift] 태그 여러개를 표시하는 UI 표현하기 (0) | 2024.01.01 |
---|---|
[iOS/Swift] WebKit inspector 로그 확인, isInspectable, 검사할 수 있는 응용 프로그램 없음 (0) | 2023.12.24 |
[iOS/Swift] 코드로 Custom Class Button 만들기(커스텀 클래스 버튼) (0) | 2023.12.12 |
[iOS/Swift] UIScrollView와 비교를 통해 가볍게 알아보는 UITableView, UIKit 기본 (0) | 2023.08.01 |
[iOS/Swift] UIView 배경색 변경, backgroundColor (0) | 2023.06.27 |