fix PaginationWrapper retry button showing
This commit is contained in:
parent
3931c09d7f
commit
1d21338de9
|
|
@ -1,5 +1,8 @@
|
|||
# Changelog
|
||||
|
||||
### 0.7.19
|
||||
- **Fix**: `PaginationWrapper` retry button showing.
|
||||
|
||||
### 0.7.18
|
||||
- **Update**: default implementation of `PaginationWrapperUIDelegate`.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = "LeadKit"
|
||||
s.version = "0.7.18"
|
||||
s.version = "0.7.19"
|
||||
s.summary = "iOS framework with a bunch of tools for rapid development"
|
||||
s.homepage = "https://github.com/TouchInstinct/LeadKit"
|
||||
s.license = "Apache License, Version 2.0"
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ final public class PaginationWrapper<Cursor: ResettableRxDataSourceCursor, Deleg
|
|||
|
||||
private typealias LoadingState = DataLoadingModel.NetworkOperationStateType
|
||||
|
||||
private typealias FinishInfiniteScrollCompletion = ((UIScrollView) -> Void)
|
||||
|
||||
private var wrappedView: AnyPaginationWrappable
|
||||
private let paginationViewModel: DataLoadingModel
|
||||
private weak var delegate: Delegate?
|
||||
|
|
@ -186,14 +188,15 @@ final public class PaginationWrapper<Cursor: ResettableRxDataSourceCursor, Deleg
|
|||
|
||||
replacePlaceholderViewIfNeeded(with: errorView)
|
||||
} else if case .loadingMore = afterState {
|
||||
removeInfiniteScroll()
|
||||
|
||||
guard let retryButton = uiDelegate?.footerRetryButton(),
|
||||
let retryButtonHeigth = uiDelegate?.footerRetryButtonHeight() else {
|
||||
let retryButtonHeight = uiDelegate?.footerRetryButtonHeight() else {
|
||||
|
||||
removeInfiniteScroll()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
retryButton.frame = CGRect(x: 0, y: 0, width: wrappedView.scrollView.bounds.width, height: retryButtonHeigth)
|
||||
retryButton.frame = CGRect(x: 0, y: 0, width: wrappedView.scrollView.bounds.width, height: retryButtonHeight)
|
||||
|
||||
retryButton.rx
|
||||
.controlEvent(.touchUpInside)
|
||||
|
|
@ -203,7 +206,13 @@ final public class PaginationWrapper<Cursor: ResettableRxDataSourceCursor, Deleg
|
|||
|
||||
uiDelegate?.footerRetryButtonWillAppear()
|
||||
|
||||
wrappedView.footerView = retryButton
|
||||
removeInfiniteScroll { scrollView in
|
||||
self.wrappedView.footerView = retryButton
|
||||
|
||||
let newContentOffset = CGPoint(x: 0, y: scrollView.contentOffset.y + retryButtonHeight)
|
||||
|
||||
scrollView.setContentOffset(newContentOffset, animated: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -272,8 +281,8 @@ final public class PaginationWrapper<Cursor: ResettableRxDataSourceCursor, Deleg
|
|||
wrappedView.scrollView.infiniteScrollIndicatorView = uiDelegate?.loadingMoreIndicator()?.view
|
||||
}
|
||||
|
||||
private func removeInfiniteScroll() {
|
||||
wrappedView.scrollView.finishInfiniteScroll()
|
||||
private func removeInfiniteScroll(with completion: FinishInfiniteScrollCompletion? = nil) {
|
||||
wrappedView.scrollView.finishInfiniteScroll(completion: completion)
|
||||
wrappedView.scrollView.removeInfiniteScroll()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,11 @@ import UIKit
|
|||
public final class AnyPaginationWrappable: PaginationWrappable {
|
||||
|
||||
private typealias ViewSetter = (UIView?) -> Void
|
||||
private typealias ViewGetter = () -> UIView?
|
||||
|
||||
public var footerView: UIView? {
|
||||
get {
|
||||
return footerViewBacking
|
||||
return footerViewGetter()
|
||||
}
|
||||
set {
|
||||
footerViewSetter(newValue)
|
||||
|
|
@ -38,7 +39,7 @@ public final class AnyPaginationWrappable: PaginationWrappable {
|
|||
|
||||
public var backgroundView: UIView? {
|
||||
get {
|
||||
return backgroundViewBacking
|
||||
return backgroundViewGetter()
|
||||
}
|
||||
set {
|
||||
backgroundViewSetter(newValue)
|
||||
|
|
@ -47,26 +48,30 @@ public final class AnyPaginationWrappable: PaginationWrappable {
|
|||
|
||||
public let scrollView: UIScrollView
|
||||
|
||||
private let backgroundViewBacking: UIView?
|
||||
private let footerViewBacking: UIView?
|
||||
|
||||
private let backgroundViewSetter: ViewSetter
|
||||
private let footerViewSetter: ViewSetter
|
||||
|
||||
public init<View>(view: View) where View: PaginationWrappable {
|
||||
private let backgroundViewGetter: ViewGetter
|
||||
private let footerViewGetter: ViewGetter
|
||||
|
||||
public init<View: PaginationWrappable>(view: View) {
|
||||
self.scrollView = view.scrollView
|
||||
self.backgroundViewBacking = view.backgroundView
|
||||
self.footerViewBacking = view.footerView
|
||||
|
||||
var localView = view
|
||||
|
||||
self.backgroundViewSetter = {
|
||||
localView.backgroundView = $0
|
||||
}
|
||||
self.backgroundViewGetter = {
|
||||
localView.backgroundView
|
||||
}
|
||||
|
||||
self.footerViewSetter = {
|
||||
localView.footerView = $0
|
||||
}
|
||||
self.footerViewGetter = {
|
||||
localView.footerView
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue