Панель UIScrollView вставляет размер панели вкладок и панели навигации - PullRequest
2 голосов
/ 23 января 2020

Я использую библиотеку Chatto (https://github.com/badoo/Chatto) для окна чата и инициализирую контроллер представления, который наследуется от его BaseChatViewController.

Проблема, которая у меня возникает, заключается в том, что в то время как представление прокрутки может прокручиваться вплоть до верха и низа разговора, место, где останавливается полоса прокрутки, имеет размер примерно такого же размера, что и панель навигации вверху и панель вкладок внизу.

Демонстрационное приложение Chatto, похоже, не имеет этой проблемы, поэтому мне интересно, есть ли что-то, что я должен делать по-другому в моем приложении.

enter image description here

Вот 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)

  }

}
...