我正在使用 Chatto 库 ( https://github.com/badoo/Chatto ) 作为聊天窗口,并初始化从其 BaseChatViewController 继承的视图控制器。
我遇到的问题是,虽然滚动视图可以一直滚动到对话的顶部和底部,但滚动条停止的位置与顶部和选项卡上的导航栏大小相同底部的栏。
Chatto 演示应用似乎没有这个问题,所以我想知道在我的应用中是否应该做一些不同的事情。
这是视图控制器
import Chatto
import ChattoAdditions
import RxSwift
import UIKit
class ConversationViewController: BaseChatViewController {
var viewModel: ConversationViewModel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
title = viewModel.title
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadViewModel()
}
override func createChatInputView() -> UIView {
return viewModel.chatInputView
}
override func createPresenterBuilders() -> [ChatItemType: [ChatItemPresenterBuilderProtocol]] {
return viewModel.presenterBuilders
}
}
// MARK: - MessagesSelectorDelegate
extension ConversationViewController: MessagesSelectorDelegate {
func messagesSelector(_: MessagesSelectorProtocol, didSelectMessage _: MessageModelProtocol) {
enqueueModelUpdate(updateType: .normal)
}
func messagesSelector(_: MessagesSelectorProtocol, didDeselectMessage _: MessageModelProtocol) {
enqueueModelUpdate(updateType: .normal)
}
}
// MARK: - Helpers
extension ConversationViewController {
private func loadViewModel() {
ActivityIndicator.shared.show(on: view)
viewModel.load()
.subscribe { [weak self] event in
guard let self = self else {
Log.error(
"The ConversationViewController, while reacting to it's viewModel loading, was unable to unwrap self"
)
return
}
ActivityIndicator.shared.hide()
switch event {
case .completed:
return
case let .error(error):
Log.error(error)
self.presentErrorAlert(error)
}
}
.disposed(by: disposeBag)
}
}