Если мы подробно изучим код RxCocoa.Чтобы быть более конкретным в структуре «Reactive», мы могли бы найти, что у нее есть расширение, где ее основанием является UIButton, и в этом расширении есть переменная tap типа ControlEvent, которая возвращает controlEvent (.touchUpInside).
Итак, вопрос в том, как controlEvent (.touchUpInside) обрабатывает события управления?!
- controlEvent (_ controlEvents: UIControlEvents) -> ControlEvent <()> .. являетсяФункция внутри расширения для "Реактивной" структуры, где ее основой является UIControl.И когда нашей базой является UIButton, который также расширяет UIControl, поэтому мы можем также вызывать эту функцию, когда нашей базой является UIButton, и это наш случай, и эта функция обрабатывает отводы UIButton (которые указаны только в RxCocoa как в расширении).
Как функция controlEvent работает и обрабатывает touchupInside?!
- controllEvent, просто добавляя селектор цели в UIControll, выбрасывает пользовательский класс ControlTarget в RxCocoa, который пропускает обратный вызов в UIControllиспустить onNext в определенном управляющем событии (в нашем случае touchupInside).
читать эти классы в RxCoca, если мое объяснение недостаточно хорошо:)
- UIButton + Rx.swift
- ControlEvent.swift
- UIControl + Rx.swift
- ControlTarget.swift