Typed rx_event for UIGestureRecognizer
This commit is contained in:
parent
c2ad533b1d
commit
3e1b2d0789
|
|
@ -15,15 +15,15 @@ import RxSwift
|
|||
|
||||
|
||||
// This should be only used from `MainScheduler`
|
||||
class GestureTarget: RxTarget {
|
||||
typealias Callback = (UIGestureRecognizer) -> Void
|
||||
class GestureTarget<Recognizer: UIGestureRecognizer>: RxTarget {
|
||||
typealias Callback = (Recognizer) -> Void
|
||||
|
||||
let selector = #selector(ControlTarget.eventHandler(_:))
|
||||
|
||||
weak var gestureRecognizer: UIGestureRecognizer?
|
||||
weak var gestureRecognizer: Recognizer?
|
||||
var callback: Callback?
|
||||
|
||||
init(_ gestureRecognizer: UIGestureRecognizer, callback: Callback) {
|
||||
init(_ gestureRecognizer: Recognizer, callback: Callback) {
|
||||
self.gestureRecognizer = gestureRecognizer
|
||||
self.callback = callback
|
||||
|
||||
|
|
@ -51,13 +51,21 @@ class GestureTarget: RxTarget {
|
|||
}
|
||||
}
|
||||
|
||||
extension UIGestureRecognizer {
|
||||
public protocol Rx {
|
||||
|
||||
}
|
||||
|
||||
extension UIGestureRecognizer: Rx {
|
||||
|
||||
}
|
||||
|
||||
extension Rx where Self: UIGestureRecognizer {
|
||||
|
||||
/**
|
||||
Reactive wrapper for gesture recognizer events.
|
||||
*/
|
||||
public var rx_event: ControlEvent<UIGestureRecognizer> {
|
||||
let source: Observable<UIGestureRecognizer> = Observable.create { [weak self] observer in
|
||||
public var rx_event: ControlEvent<Self> {
|
||||
let source: Observable<Self> = Observable.create { [weak self] observer in
|
||||
MainScheduler.ensureExecutingOnScheduler()
|
||||
|
||||
guard let control = self else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue