mirror of
https://github.com/ReactiveX/RxSwift.git
synced 2024-10-05 06:27:29 +03:00
Add the scroll view reactive wrapper for the delegate method scrollViewDidEndDragging(_:willDecelerate:)
This commit is contained in:
parent
d69c9b1ec4
commit
665d2a164d
@ -63,6 +63,15 @@ extension Reactive where Base: UIScrollView {
|
||||
let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndDecelerating(_:))).map { _ in }
|
||||
return ControlEvent(events: source)
|
||||
}
|
||||
|
||||
/// Reactive wrapper for delegate method `scrollViewDidEndDragging(_:willDecelerate:)`
|
||||
public var didEndDragging: ControlEvent<Bool> {
|
||||
let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndDragging(_:willDecelerate:))).map { value -> Bool in
|
||||
let willDecelerate = value[1] as! Bool
|
||||
return willDecelerate
|
||||
}
|
||||
return ControlEvent(events: source)
|
||||
}
|
||||
|
||||
/// Reactive wrapper for delegate method `scrollViewDidZoom`
|
||||
public var didZoom: ControlEvent<Void> {
|
||||
|
@ -14,6 +14,7 @@ import RxSwift
|
||||
import RxCocoa
|
||||
import UIKit
|
||||
import XCTest
|
||||
import RxTest
|
||||
|
||||
class UIScrollViewTests : RxTest {}
|
||||
|
||||
@ -86,7 +87,34 @@ extension UIScrollViewTests {
|
||||
|
||||
XCTAssertTrue(completed)
|
||||
}
|
||||
|
||||
|
||||
func testScrollViewDidEndDragging() {
|
||||
let scheduler = TestScheduler(initialClock: 0)
|
||||
let results = scheduler.createObserver(Bool.self)
|
||||
|
||||
autoreleasepool {
|
||||
let scrollView = UIScrollView()
|
||||
|
||||
let o = scheduler.createHotObservable([
|
||||
next(250, false),
|
||||
next(300, true),
|
||||
])
|
||||
|
||||
let subscription: Disposable! = scrollView.rx.didEndDragging.subscribe(results)
|
||||
|
||||
_ = scheduler.start {
|
||||
o.do(onNext: {
|
||||
scrollView.delegate!.scrollViewDidEndDragging!(scrollView, willDecelerate: $0)
|
||||
}, onDispose: {
|
||||
subscription.dispose()
|
||||
})
|
||||
}
|
||||
}
|
||||
XCTAssertEqual(results.events, [
|
||||
next(250, false),
|
||||
next(300, true)
|
||||
])
|
||||
}
|
||||
|
||||
func testScrollViewContentOffset() {
|
||||
var completed = false
|
||||
|
Loading…
Reference in New Issue
Block a user