Я использую библиотеку Chatto (https://github.com/badoo/Chatto) для окна чата и инициализирую контроллер представления, который наследуется от его BaseChatViewController.
Проблема, которая у меня возникает, заключается в том, что в то время как представление прокрутки может прокручиваться вплоть до верха и низа разговора, место, где останавливается полоса прокрутки, имеет размер примерно такого же размера, что и панель навигации вверху и панель вкладок внизу.
Демонстрационное приложение Chatto, похоже, не имеет этой проблемы, поэтому мне интересно, есть ли что-то, что я должен делать по-другому в моем приложении.
Вот viewController
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)
}
}