Skip to content

Commit

Permalink
替换 UIRefreshControl
Browse files Browse the repository at this point in the history
  • Loading branch information
Finb committed Jan 2, 2025
1 parent 1b48b49 commit 30eb46d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 8 deletions.
36 changes: 29 additions & 7 deletions Controller/MessageListViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,6 @@ class MessageListViewController: BaseViewController<MessageListViewModel> {
return UIBarButtonItem(customView: btn)
}()

private var expandedGroup: Set<String> = []

private let itemDeleteInGroupRelay = PublishRelay<MessageItemModel>()

lazy var tableView: UITableView = {
let tableView = UITableView()
tableView.separatorStyle = .none
Expand All @@ -66,10 +62,19 @@ class MessageListViewController: BaseViewController<MessageListViewModel> {

tableView.rx.setDelegate(self).disposed(by: rx.disposeBag)
tableView.mj_footer = MJRefreshAutoFooter()
tableView.refreshControl = UIRefreshControl()

return tableView
}()

/// 展开的群组
private var expandedGroup: Set<String> = []
/// 下拉刷新标记字段
private var canRefresh = true

/// 群组中删除消息的事件流
private let itemDeleteInGroupRelay = PublishRelay<MessageItemModel>()
/// 下拉刷新事件流
private let refreshRelay = PublishRelay<Void>()

override func makeUI() {
navigationItem.searchController = UISearchController(searchResultsController: nil)
Expand Down Expand Up @@ -104,7 +109,7 @@ class MessageListViewController: BaseViewController<MessageListViewModel> {
return false
}
.subscribe(onNext: { [weak self] _ in
self?.tableView.refreshControl?.sendActions(for: .valueChanged)
self?.refreshRelay.accept(())
}).disposed(by: rx.disposeBag)

// 点击群组消息,展开群
Expand Down Expand Up @@ -190,7 +195,7 @@ class MessageListViewController: BaseViewController<MessageListViewModel> {

let output = viewModel.transform(
input: MessageListViewModel.Input(
refresh: tableView.refreshControl!.rx.controlEvent(.valueChanged).asDriver(),
refresh: refreshRelay.asDriver(onErrorDriveWith: .empty()),
loadMore: tableView.mj_footer!.rx.refresh.asDriver(),
itemDelete: tableView.rx.modelDeleted(MessageListCellItem.self).asDriver(),
itemDeleteInGroup: itemDeleteInGroupRelay.asDriver(onErrorDriveWith: .empty()),
Expand Down Expand Up @@ -371,4 +376,21 @@ extension MessageListViewController: UISearchControllerDelegate {
searchController.searchBar.searchTextField.sendActions(for: .editingDidEnd)
}
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y + scrollView.adjustedContentInset.top
if offset <= -10 && canRefresh {
// 触发下拉刷新,并震动
canRefresh = false
UIImpactFeedbackGenerator(style: .light).impactOccurred()
refreshRelay.accept(())
}
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y + scrollView.adjustedContentInset.top
if offset >= 0 && !canRefresh {
canRefresh = true
}
}
}
1 change: 0 additions & 1 deletion Controller/MessageListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,6 @@ class MessageListViewModel: ViewModel, ViewModelType {
Observable
.merge(
input.refresh.asObservable().map { () },
filterGroups.map { _ in () },
input.searchText.asObservable().map { _ in () },
messageTypeChanged.asObservable().map { _ in () }
)
Expand Down

0 comments on commit 30eb46d

Please sign in to comment.