종종 StackView와 같이 터치 인터페이스와 관련없는 View 속성에 버튼을 넣고 싶은(넣어야 하는) 경우가 생긴다
보통 UITapGestureRecognizer를 사용해서 탭 제스처를 추가하는데,
마침 이번 프로젝트에서는 RxSwift를 활용하고 있어서 더 간편하게 사용 가능한 RxGesture를 사용해 보았다
사용 방법
1. Xcode의 File > Add Package Dependency 메뉴를 선택하고 아래의 URL을 입력
→ https://github.com/RxSwiftCommunity/RxGesture
GitHub - RxSwiftCommunity/RxGesture: RxSwift reactive wrapper for view gestures
RxSwift reactive wrapper for view gestures. Contribute to RxSwiftCommunity/RxGesture development by creating an account on GitHub.
github.com
2. import RxGesture
3. 적용할 View에다가 rx.tapGesture() 넣어준다
RxGesture의 네가지 활용 예시
1. tapGesture
- 탭 제스처가 성공적으로 인식 되었을 때 호출
view.rx.tapGesture()
.when(.recognized) // 탭이 인식되었을 때
.subscribe(onNext: { gesture in
print("Tap gesture recognized!")
})
.disposed(by: disposeBag)
2. PanGesture
- 팬 제스처*가 감지되고 그 중간 상태에서 호출 *드래그, 스크롤 등
view.rx.panGesture()
.when(.changed) // 팬 동작이 계속되는 동안
.subscribe(onNext: { gesture in
let translation = gesture.translation(in: view)
print("Pan gesture moving with translation: \(translation)")
})
.disposed(by: disposeBag)
3. LongPressGesture
- 사용자가 화면을 누르고 있는 상태가 감지될 때 호출
view.rx.longPressGesture()
.when(.began) // 롱 프레스가 시작될 때
.subscribe(onNext: { gesture in
print("Long press gesture began!")
})
.disposed(by: disposeBag)
4. SwipeGesture
- 특정 방향으로 스와이프 할 때 호출 가능하도록 설정
view.rx.swipeGesture(.right) // 오른쪽 스와이프 인식
.when(.recognized) // 스와이프가 성공적으로 인식되었을 때
.subscribe(onNext: { gesture in
print("Swipe gesture recognized!")
})
.disposed(by: disposeBag)
💡 When() 메서드는 아래의 제스처 상태에서 반응할 수 있다
(제스처별 적용 안되는 상태가 있을 수 있음)
- .began: 제스처가 시작될 때
- .changed: 제스처가 진행되는 동안 (특히 팬이나 핀치 제스처**에서 유용) **손가락으로 벌리거나 모으는 동작
- .ended: 제스처가 끝날 때
- .recognized: 제스처가 성공적으로 인식되었을 때 (일반적으로 탭, 스와이프에서 사용)
- .cancelled: 제스처가 취소되었을 때
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[Swift🍎] tableView, collectionView 식별자 간단하게 관리하기! (1) | 2024.10.31 |
---|---|
[Swift🍎] RxSwift로 UITableView에 bind 하기 (0) | 2024.10.31 |
[Swift🍎] UIColor를 CGColor에 할당해야 하는 경우 (0) | 2024.10.16 |
[Swift🍎] RxSwift에서 bind와 driver의 차이 (0) | 2024.10.14 |
[Swift🍎] UISearchController 키보드 숨김처리 (0) | 2024.09.26 |