I want to have this delete to be reactive with RxCcocoa and RxSwift using DelegateProxy. I am getting this error:
Argument of '#selector' refers to instance method 'rangeSeekSlider(_:didChange:maxValue:)' that is not exposed to Objective-C
The delegate I am converting from this library: https://github.com/WorldDownTown/RangeSeekSlider/blob/master/Sources/RangeSeekSliderDelegate.swift
import CoreGraphics
public protocol RangeSeekSliderDelegate: class {
/// Called when the RangeSeekSlider values are changed
///
/// - Parameters:
/// - slider: RangeSeekSlider
/// - minValue: minimum value
/// - maxValue: maximum value
func rangeSeekSlider(_ slider: RangeSeekSlider, didChange minValue: CGFloat, maxValue: CGFloat)
...
}
And here is the the delegate proxy
import RxSwift
import RxCocoa
import RangeSeekSlider
final class RxRangeSeekSliderDelegateProxy:
DelegateProxy<RangeSeekSlider, RangeSeekSliderDelegate>,
RangeSeekSliderDelegate,
DelegateProxyType {
init(rangeSeekSlider: RangeSeekSlider) {
super.init(parentObject: rangeSeekSlider, delegateProxy: RxRangeSeekSliderDelegateProxy.self)
}
static func registerKnownImplementations() {
register { RxRangeSeekSliderDelegateProxy(rangeSeekSlider: $0) }
}
static func currentDelegate(for object: RangeSeekSlider) -> RangeSeekSliderDelegate? {
return object.delegate
}
static func setCurrentDelegate(_ delegate: RangeSeekSliderDelegate?, to object: RangeSeekSlider) {
object.delegate = delegate
}
}
The reactive extension of the slider, this is where I get the error:
import RxSwift
import RxCocoa
import RangeSeekSlider
extension Reactive where Base: RangeSeekSlider {
var delegate: DelegateProxy<RangeSeekSlider, RangeSeekSliderDelegate> {
return RxRangeSeekSliderDelegateProxy.proxy(for: base)
}
var didChange: Observable<(Bool, Bool)> {
let source = delegate.methodInvoked(#selector(RangeSeekSliderDelegate.rangeSeekSlider(_:didChange:maxValue:)))
.map{ (parameters) in
return (parameters[0] as? Bool ?? false, parameters[1] as? Bool ?? false)
}
return source
}
}