ReactorKit사용 중 view의 tap gesture를 action으로 전달해 주는 방법을 찾다가 RxGesture을 발견했습니다.
- 기존에 gesture을 recognize하는 과정을 생략할 수 있습니다.
let view = UIView()
let tap = UITapGestureRecognizer(
target: self,
action: #selector(tapView)
)
view.addGestureRecognizer(tap)
view.isUserInteractionEnabled = true
- gesture을 recognize하지 않아도 전달할 수 있습니다.
view.rx
.tapGesture()
.when(.recognized)
.subscribe(onNext: { _ in
//react to taps
})
.disposed(by: stepBag)
tapGestrue()를 그냥 사용시 view를 bindin 할 때에도 event가 전달됨으로 .when(.recognized)
를 추가해줍니다.
- reactorKit 사용시 reactor에게 action을 전달하는 용도로 활용했습니다.
numberSelectView.rx.tapGesture()
.when(.recognized)
.asObservable()
.map { _ in Reactor.Action.selectNumber }
.bind(to: reactor.action)
.disposed(by: self.disposeBag)