【问题标题】:MessageKit InputBar is hidden/removed on ViewController dismissalMessageKit InputBar 在 ViewController 关闭时被隐藏/删除
【发布时间】:2019-10-04 12:05:06
【问题描述】:

我正在使用 MessageKit 3.0.0-swift5 分支进行聊天。 单击消息,我将展示 ViewController。 当 Viewcontroller 被关闭时,我无法访问 InputBar。

有人遇到过这个问题吗?

查看视频here

代码:

// MessageCellDelegate

func didTapMessage(in cell: MessageCollectionViewCell) { 
     self.showFileInBrowser(withTitle: "", url: fileURL)
}

func showFileInBrowser(withTitle title: String? = nil,  url: URL) {
     self.fileBrowser = FileBrowserViewController(title: title, url: url)
     let navigation = BaseNavigationController(rootViewController: fileBrowser!)
     self.present(navigation, animated: true, completion: nil)
}

// FileBrowserViewController

@objc func closeButtonTapped() {
    self.dismiss(animated: true, completion: nil)
}

我也在使用 IQKeyboardManager,但以下解决方案不起作用。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    IQKeyboardManager.shared().isEnabled = false
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    IQKeyboardManager.shared().isEnabled = true
}

【问题讨论】:

    标签: ios swift inputaccessoryview messagekit inputbaraccessoryview


    【解决方案1】:

    我在我的应用程序中遇到了同样的问题,它只使用了InputBarViewController(出于某些原因,我不得不实现自己的聊天,而不是使用 MessageKit)。

    因此,如果您尝试显示不是来自当前控制器的模态视图控制器,或者甚至将第一响应者焦点移动到当前 VC 中的另一个 UITextField(例如搜索字段),则此问题很容易重现。 对我来说,可行的解决方案是在从搜索字段或viewDidAppear 内部(或在您可以确定的其他地方,聊天 UI 再次可见)退出控制权之后,在当前视图控制器实例上调用 becomeFirstResponder

    附:当UIContextMenu(单元格中的长触摸)被解雇时,我也遇到了这个问题。解决方案几乎相同。

    【讨论】:

      【解决方案2】:

      我认为您必须在呈现下一个 ViewController 之前通过 TextView.resignFirstResponder() 禁用键盘因为问题在 ViewController 呈现时开始

      【讨论】:

      • 如果仍有问题,请告诉我以找到解决方案
      • 关闭键盘不起作用。这是非常随机的行为。
      • 我正在使用 JSQ,但同样的问题。 InputToolBar 在呈现原生相机应用程序后消失。调用 resignFirstResponder 什么也没做,因为 ViewController 会在新的 ViewController 出现时退出第一响应者,同时 inputToolBar 会被关闭。
      【解决方案3】:

      我之前也遇到过这个问题,但我尝试通过添加以下代码来呈现nextViewController。希望它会起作用。

       nextViewController.modalPresentationStyle = .overCurrentContext
       nextViewController.modalTransitionStyle = .coverVertical
      

      【讨论】:

      • 我正在使用 JSQ,但同样的问题。 InputToolBar 在呈现原生相机应用后消失。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多