Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- swift documentation
- uiscrollview
- 스위프트
- Refactoring
- tableView
- 리팩토링
- 클린 코드
- uitableview
- rxswift
- 애니메이션
- UITextView
- map
- 리펙터링
- ios
- Observable
- combine
- MVVM
- Clean Code
- clean architecture
- Protocol
- swiftUI
- HIG
- UICollectionView
- SWIFT
- Xcode
- ribs
- Human interface guide
- 리펙토링
- collectionview
- RxCocoa
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] UITextField, UITextView 엔터 버튼, Done 버튼 처리 방법 본문
iOS 기본 (swift)
[iOS - swift] UITextField, UITextView 엔터 버튼, Done 버튼 처리 방법
jake-kim 2022. 1. 29. 03:11
* 코드로 UI 작성에 편리를 위해 사용한 프레임워크
- SnapKit
- Then
pod 'SnapKit'
pod 'Then'
Done 버튼 탭 시 동작 아이디어
- Done 버튼을 탭하게 되면, escape string 값 '\n' 입력으로 처리되는 형태이므로, textField(_:shouldChanceCharactersIn:replacementString:) 델리게이트에서 처리
- `\n`값을 받은 경우, 입력되는 처리를 한 후 false를 리턴하여, \n 입력을 막는 형태
UI 준비
- Done버튼이 눌렸을 때 UILabel에 값을 입력하는 형태
- UILabel - 텍스트 필드의 결과값 입력
- textField - 인풋
// ViewController.swift
import UIKit
import SnapKit
import Then
class ViewController: UIViewController {
private let label = UILabel().then {
$0.textColor = .systemBlue
$0.font = .systemFont(ofSize: 32)
$0.text = "result: "
}
private let textField = UITextField().then {
$0.returnKeyType = .done
$0.borderStyle = .roundedRect
$0.textColor = .black
$0.placeholder = "input..."
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.label)
self.view.addSubview(self.textField)
self.label.snp.makeConstraints {
$0.top.equalTo(self.view.safeAreaLayoutGuide).inset(36)
$0.centerX.equalToSuperview()
}
self.textField.snp.makeConstraints {
$0.top.equalTo(self.view.safeAreaLayoutGuide).inset(120)
$0.centerX.equalToSuperview()
}
}
}
- textField delegate 설정
- delegate 준수
self.textField.delegate = self
- \n 문자열이 들어올 때 ( = Done버튼이 눌린 경우), 입력 처리 후 false를 리턴하여 textField에는 아무런 입력이 되지 않도록 처리
extension ViewController: UITextFieldDelegate { func textField( _ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String ) -> Bool { guard string != "\n" else { self.label.text = "result: " + (textField.text ?? "") return false } return true } }
- delegate 준수
'iOS 기본 (swift)' 카테고리의 다른 글
[iOS - swift] @inlinable 이란? (0) | 2022.03.11 |
---|---|
[iOS - swift] App Icon (앱 아이콘) 변경 방법, 앱 아이콘 이미지 Generator (0) | 2022.02.13 |
[iOS - swift] Error, LocalizedError, localizedDescription 개념 (0) | 2022.01.18 |
[iOS - swift] KeyPath, WritableKeyPath, ReferenceWritableKeyPath, DynamicMemberLookup 개념 (0) | 2022.01.09 |
[iOS - swift] 하단 버튼 SafeArea, 노치 대응 방법 (auto layout) (0) | 2021.12.30 |
Comments