textField.text = "hogehoge"
とプログラムからtext
を変更しただけではtextField.rx.text
にイベントが流れてくれない。
RxCocoaのソースを見ると.valueChanged
イベントが流れた時にrx.text
が更新されるようである。そのため、textField.sendActions(for: .valueChanged)
として、明示的にイベントを流せば良い。
UIControl+Rx.swift
/// This is a separate method to better communicate to public consumers that
/// an `editingEvent` needs to fire for control property to be updated.
internal func controlPropertyWithDefaultEvents<T>(
editingEvents: UIControl.Event = [.allEditingEvents, .valueChanged],
getter: @escaping (Base) -> T,
setter: @escaping (Base, T) -> Void
) -> ControlProperty<T> {
return controlProperty(
editingEvents: editingEvents,
getter: getter,
setter: setter
)
}