3

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

有人遇到过这个问题吗?

在这里查看视频。

代码:

// 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
}
4

3 回答 3

1

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

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

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

于 2020-08-17T15:16:49.713 回答
0

我以前也遇到过这个问题,但我试图nextViewController通过添加以下代码来呈现。希望它会奏效。

 nextViewController.modalPresentationStyle = .overCurrentContext
 nextViewController.modalTransitionStyle = .coverVertical
于 2019-10-05T17:02:37.817 回答
0

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

于 2019-10-04T14:10:01.543 回答