     self.tableView.rx.itemSelected
       .subscribe(onNext: { [weak tableView] indexPath in
         tableView?.deselectRow(at: indexPath, animated: true)
+      })
+      .disposed(by: self.disposeBag)
+
+    self.messageInputBar.rx.tapGesture()
+      .when(.recognized)
+      .subscribe(onNext: { [weak self] _ in
+        self?.titleInput.becomeFirstResponder()
       })
       .disposed(by: self.disposeBag)
   }

      .bind(to: reactor.action)
      .disposed(by: self.disposeBag)

    self.titleInput.rx.text
      .map { $0?.isEmpty == false }
      .subscribe(onNext: { [weak self] validation in
        guard let `self` = self else { return }
        self.messageInputBar.isEnabled = validation

  let dataSource = RxTableViewSectionedReloadDataSource<TaskListSection>()
  fileprivate let headerView = SectionHeaderView()
  fileprivate let messageInputBar = MessageInputBar()
  fileprivate lazy var tableView = UITableView() <== {
    $0.alwaysBounceVertical = true
    $0.backgroundColor = .snow
    $0.separatorStyle = .none
