project/Kuring(공지알림)

[iOS] RxGesture에 정리 기본

lgvv 2021. 12. 20. 02:33

[iOS] RxGesture에 정리 기본

 

Gesture를 Rx형태로 사용할 수 있음.

 

 

✅ 바닐라하게 사용

    var backView = UIView().then {
        $0.backgroundColor = .lightGray
        $0.alpha = 0.3
        $0.isHidden = true
    }
    
    override func viewDidLoad() { 
        super.viewDidLoad()
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handelTap(sender: )))
        self.backView.addGestureRecognizer(tapGesture)
    }
    
    @objc func handelTap(sender: UITapGestureRecognizer) {
        print("tap - objc")
    }

 

 

✅ RxGesture를 사용한 방식

   var backView = UIView().then {
        $0.backgroundColor = .lightGray
        $0.alpha = 0.3
        $0.isHidden = true
    }
    
    override func viewDidLoad() { 
        super.viewDidLoad()
        
        backView.rx.tapGesture()
            .when(.recognized) // bind시에도 이벤트가 발생하기 때문 .skip(1)으로도 처리 가능
            .bind{ _ in
                print("tap rx ")
            }
    }


이렇게 할 경우 더 깔끔하게 처리 가능.

 

 

다중 터치 이벤트도 손쉽게 처리 가능함.

아래 블로그 참고.

 

https://ios-development.tistory.com/312

 

[iOS - swift] RxGesture (+ tapGesture 바인딩 시 emit 현상 해결 방법)

RxGesture란 기존 Gesture 객체를 Rx로 감쌓아놓은 것 종속성 pod 'RxGesture' RxGesture 사용 방법 RxGesture가 없는 경우, 일반 UIView 바인딩 let sampleView = UIView() let tapGesture = UITapGestureRecogni..

ios-development.tistory.com