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)

참고1
참고2