Search code examples
swifttextfieldrx-swiftuicontrolevents

How can i get controlEvent type in RxSwift?


I added textfield two controlEven with RxSwift I want to different things in a method.

textField.rx.controlEvent([.editingDidBegin, .editingDidEnd])
        .asObservable()
        .subscribe(onNext: { event in
            // setFocusing(withType: ControlEvent)
        })

private func setFocusing(type: ControlEvent) {
    if type == .editingDidBegin { 
       //....
    } else if type ==.editingDidEnd {
       //....
    }
}

I want to execute everything one method but how can I get controlEvent type? Is it possible?


Solution

  • Try this:

    Observable.merge(
      [.editingDidBegin, .editingDidEnd]
        .map { event in
          textField.rx.controlEvent(event).map { event }
        }
    )
    .subscribe(onNext: setFocusing)
    
    func setFocusing(type: UIControl.Event) {
      if type == .editingDidBegin {
        //....
      } else if type == .editingDidEnd {
        //....
      }
    }