在ViewController解雇时,MessageKit InputBar被隐藏/删除

时间:2019-10-04 12:05:06

标签: ios swift inputaccessoryview messagekit inputbaraccessoryview

我正在使用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
}

3 个答案:

答案 0 :(得分:0)

我认为您必须先通过TextView.resignFirstResponder()提出下一个ViewController禁用键盘,因为问题是在ViewController提出时开始的

答案 1 :(得分:0)

我之前也遇到过这个问题,但是我尝试通过添加以下代码来展示//my js file var traceback = require("traceback"); var log=require('./LogHandler'); function GetAllStudents (){ var stack =new traceback(); console.log('MethodName' + stack[0].name + ' fileName ' + stack[0].file) } 。希望它能工作。

nextViewController

答案 2 :(得分:0)

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

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

P.S。当UIContextMenu(单元格中的长时间触摸)被取消时,我也遇到了这个问题。解决方案几乎相同。

相关问题