일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클린 코드
- collectionview
- clean architecture
- ribs
- Refactoring
- UICollectionView
- RxCocoa
- uitableview
- SWIFT
- MVVM
- Protocol
- 애니메이션
- Human interface guide
- tableView
- combine
- rxswift
- map
- 리팩토링
- HIG
- uiscrollview
- ios
- 스위프트
- 리펙토링
- swiftUI
- Observable
- UITextView
- 리펙터링
- Clean Code
- Xcode
- swift documentation
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] RxSwift - UITextField (rx.controlEvent, rx.text, rx.observe), UIControl 액션 본문
[iOS - swift] RxSwift - UITextField (rx.controlEvent, rx.text, rx.observe), UIControl 액션
jake-kim 2021. 3. 5. 23:05UIControl 이벤트의 종류
UIControl.Event |
|
touchDown |
컨트롤을 터치했을 때 발생하는 이벤트 |
touchDownRepeat |
컨트롤을 연속 터치 할 때 발생하는 이벤트 |
touchDragInside |
컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생하는 이벤트 |
touchDragOutside |
터치 영역이 컨트롤의 바깥쪽에서 드래그 할 때 발생하는 이벤트 |
touchDragEnter |
터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔다가 다시 들어왔을 때 발생하는 이벤트 |
touchDragExit |
터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔을 때 발생하는 이벤트 |
touchUpInside |
컨트롤 영역 안쪽에서 터치 후 뗐을때 발생하는 이벤트 |
touchUpOutside |
컨트롤 영역 안쪽에서 터치 후 컨트롤 밖에서 뗐을때 이벤트 |
touchCancel |
터치를 취소하는 이벤트 (touchUp 이벤트가 발생되지 않음) |
valueChanged |
터치를 드래그 및 다른 방법으로 조작하여 값이 변경되었을때 발생하는 이벤트 |
primaryActionTriggered |
버튼이 눌릴때 발생하는 이벤트 (iOS보다는 tvOS에서 사용) |
editingDidBegin |
UITextField에서 편집이 시작될 때 호출되는 이벤트 |
editingChanged |
UITextField에서 값이 바뀔 때마다 호출되는 이벤트 |
editingDidEnd |
UITextField에서 외부객체와의 상호작용으로 인해 편집이 종료되었을 때 발생하는 이벤트 |
editingDidEndOnExit |
UITextField의 편집상태에서 키보드의 return 키를 터치했을 때 발생하는 이벤트 |
allTouchEvents |
모든 터치 이벤트 |
allEditingEvents |
UITextField에서 편집작업의 이벤트 |
applicationReserved |
각각의 애플리케이션에서 프로그래머가 임의로 지정할 수 있는 이벤트 값의 범위 |
systemReserved |
프레임워크 내에서 사용하는 예약된 이벤트 값의 범위 |
allEvents |
시스템 이벤트를 포함한 모든 이벤트 |
rx.controlEvent
- Rx에서 target액션(UIControl)을 wrapping한 것
- 대표적인 .editingChanged 이벤트: UITextField에서 값이 바뀔때마다 호출되는 이벤트 (초기값, 포커싱, 언포커싱에는 이벤트 x)
- 다수 문자열 복붙, 잘라내기시에도 이벤트 발동
textField.rx.controlEvent(.editingChanged)
.asObservable()
.subscribe(onNext: { [weak self] _ in
print("editingChanged")
}).disposed(by: bag)
rx.text
- rx.controlEvent(.editingChanged)의 기능 + 최초 초기화 1회 + 포커싱 + 언 포커싱 될때 이벤트 발생
textField.rx.text
.asObservable()
.subscribe(onNext: { [weak self] _ in
NSLog("text")
}).disposed(by: bag)
rx.observe
- 문자열의 property를 구독하고 있으며, property에 변경된 이벤트를 구독
- KVO를 이용한 방법이므로 키패드로 textField에 입력했을 때는 이벤트가 발생하지 않고, textField.text = "예시"로 대입한 경우 이벤트 발생
(KVO, observe 개념은 이곳 참고) - 이벤트 발생 시점: 최초 초기화 1번 + 언 포커싱 (주의: 포커싱할땐 이벤트 x) + 값이 대입된 경우
textField.rx.observe(String.self, "text") // "text"를 써주지 않으면 crash 발생
.subscribe(onNext: { [weak self] in
print($0)
}).disposed(by: bag)
'RxSwift' 카테고리의 다른 글
[iOS - swift] RxSwift - scan 연산자 (카운터 기능, toggle 버튼 구현, TextField 입력값 제한) (4) | 2021.12.28 |
---|---|
[iOS - swift] RxSwift 서버 에러처리 (retry, retryWhen) (0) | 2021.02.09 |
[RxSwift] 핵심 개념 (5) | 2020.06.25 |