Я хочу, чтобы это удаление было реагирующим с RxCcocoa и RxSwift с использованием DelegateProxy.Я получаю эту ошибку:
Аргумент '#selector' относится к методу экземпляра rangeSeekSlider (_: didChange: maxValue :) ', который не доступен Objective-C
Делегат, которого я конвертирую из этой библиотеки: 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)
...
}
А вот прокси делегата
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
}
}
Реактивное расширение ползунка, это гдеЯ получаю сообщение об ошибке:
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
}
}