- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个简单的消息应用程序,但 MessageInputBarDelegate
方法未触发。其他扩展(例如 MessagesDisplayDelegate)似乎会按预期触发。
我使用的是 Swift 4.4.2
pod 文件:
use_frameworks!
target 'm-v0.01' do
pod 'Socket.IO-Client-Swift', '~> 15.1.0'
pod 'Alamofire', '~> 5.0.0-beta.5'
pod 'MessageKit'
# pod 'MessageInputBar'
# pod 'MessageInputBar', :git => 'https://github.com/MessageKit/MessageInputBar.git', :branch => 'master'
end
我有两个 Controller ,一个用于登录,一个用于显示消息:
ViewController:(用于登录)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var loginValue: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.destination is MViewController
{
let vc = segue.destination as? MViewController
vc?.text = loginValue.text!
}
}
@IBAction func loginAction(_ sender: UIButton!) {
print("Entered Text" , loginValue.text)
performSegue(withIdentifier: "view2", sender: self)
}
}
MViewController(用于显示消息):
import UIKit
import SocketIO
import Alamofire
import MessageKit
extension MViewController: MessagesLayoutDelegate {
func heightForLocation(message: MessageType,
at indexPath: IndexPath,
with maxWidth: CGFloat,
in messagesCollectionView: MessagesCollectionView) -> CGFloat {
return 0
}
}
extension MViewController: MessagesDisplayDelegate {
func configureAvatarView(
_ avatarView: AvatarView,
for message: MessageType,
at indexPath: IndexPath,
in messagesCollectionView: MessagesCollectionView) {
let message = messages[indexPath.section]
let color = message.member.color
avatarView.backgroundColor = color
print("MessagesDisplayDelegate")
}
}
extension MViewController: MessageCellDelegate {
func didTapAvatar(in cell: MessageCollectionViewCell) {
print("Avatar tapped")
}
func didTapMessage(in cell: MessageCollectionViewCell) {
print("Message tapped")
}
func didTapCellTopLabel(in cell: MessageCollectionViewCell) {
print("Top cell label tapped")
}
func didTapMessageTopLabel(in cell: MessageCollectionViewCell) {
print("Top message label tapped")
}
func didTapMessageBottomLabel(in cell: MessageCollectionViewCell) {
print("Bottom label tapped")
}
func didTapAccessoryView(in cell: MessageCollectionViewCell) {
print("Accessory view tapped")
}
}
extension MViewController: MessageInputBarDelegate {
func messageInputBar(_ inputBar: MessageInputBar, didPressSendButtonWith text: String) {
print("here")
}
func messageInputBar(_ inputBar: MessageInputBar, textViewTextDidChangeTo text: String) {
print("changed")
}
}
extension MViewController: MessagesDataSource {
func currentSender() -> SenderType {
return Sender(id: member.name, displayName: member.name)
}
func numberOfSections(
in messagesCollectionView: MessagesCollectionView) -> Int {
return messages.count
}
func messageForItem(
at indexPath: IndexPath,
in messagesCollectionView: MessagesCollectionView) -> MessageType {
return messages[indexPath.section]
}
func messageTopLabelHeight(
for message: MessageType,
at indexPath: IndexPath,
in messagesCollectionView: MessagesCollectionView) -> CGFloat {
return 12
}
func messageTopLabelAttributedText(
for message: MessageType,
at indexPath: IndexPath) -> NSAttributedString? {
return NSAttributedString(
string: message.sender.displayName,
attributes: [.font: UIFont.systemFont(ofSize: 12)])
}
}
class MViewController: MessagesViewController{
var text:String = ""
var messages: [Message] = []
var member: Member!
override func viewDidLoad() {
super.viewDidLoad()
messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self
messagesCollectionView.messageCellDelegate = self
messageInputBar.delegate = self
}
}
我查看了许多教程和文档,这始终被记录为访问当用户点击发送或更改文本时触发的方法:
func messageInputBar(_ inputBar: MessageInputBar, didPressSendButtonWith text: String) {
print("here")
}
func messageInputBar(_ inputBar: MessageInputBar, textViewTextDidChangeTo text: String) {
print("changed")
}
我在发送消息的方式中是否遗漏了一些阻止消息监听器被触发的内容?
有一个 pod 库'MessageInputBar'
,我也应该利用它吗?看来我在代码编译时不需要这个?
更新:
我尝试在 messagesCollectionView 上设置委托(delegate):
messagesCollectionView.delegate = self as MessageInputBarDelegate as? UICollectionViewDelegate
但结果相同:发送事件未触发。
最佳答案
根据评论中的信息,我假设您没有消息栏的导出,并且没有为 viewController 设置委托(delegate)。尝试在 viewDidLoad
中设置它:
messageInputBar.delegate = self
为此,您的 Controller 必须子类化 MessagesViewController
,因此在您的情况下它将发生变化
class ViewController: UIViewController {
到:
class ViewController: MessagesViewController {
关于ios - 当用户使用 'MessageKit' 库点击发送时,监听器不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56756706/
此处显示安装 MessageKit 后的图像以及我目前遇到的问题。也许是我的 pod 文件有问题,但 MessageKit 中有问题。看起来在 MessageKit pod 文件中,一些代码需要根据它
我正在使用 MessageKit 实现一个简单的聊天屏幕图书馆。正如您在第一个屏幕截图中看到的那样,一切听起来都很正常,但我被要求做的是将所有线程向左对齐(第二个屏幕截图)。我试图找到一种方法来更改线
我正在开发的应用程序中使用 MessageKit 来实现聊天功能,并且在向 messagesCollectionView 中插入部分时遇到了奇怪的布局错误。打开对话时,线程会从缓存中正确加载,但在加载
感谢在我的另一个 SA 问题上帮助我的人,我能够创建一个返回 bool 值的函数来查看用户是否已经对聊天消息进行了投票。如果有人使用 MessageKit messageBottomLabelAttr
我想使用 MessageKit 创建以下自定义聊天气泡 我在提供的示例中使用 CustomCell 示例。但这不会根据发件人类型添加聊天气泡背景和定位。 如何创建具有相同聊天气泡背景的自定义单元格?
我正在尝试在我的应用程序中使用 MessageKit,并且我有 View 加载和显示消息。 但是,“发送”按钮永远不会触发 messageInputBar 委托(delegate),我不确定为什么。没
最近我一直在开发一个聊天应用程序,但在使用聊天异步加载图像时遇到了问题。 使用 MessageKit - 2.0 我试过这个 import MessageKit class Image: MediaI
我正在尝试实现一个简单的消息应用程序,但 MessageInputBarDelegate 方法未触发。其他扩展(例如 MessagesDisplayDelegate)似乎会按预期触发。 我使用的是 S
所以这是 Controller 层次结构 tabBarController -> 一些 Controller 和聊天 channel Controller 。 这个聊天 channel Control
我有一个使用 Messagekit 标准实现的应用程序,但是当我点击消息文本时 didTapMessage 事件没有触发(didTapAvatar 函数也根本不运行)。我没有使用自定义单元格,所以我认
我已经阅读了在 MessageKit 中创建自定义单元格的指南 here ,以及诸如 this 之类的问题 我正在尝试创建一个自定义单元格;这是我从 UICollectionViewCell 继承的单
我正在尝试放大 MessageCollectionView 中的图像在一个单元格中,当它被点击时,这是大多数消息应用程序中的标准。我成功地能够识别用户在每个单元格上的点击并确定它是照片还是文本单元格,
我正在尝试将导航栏和后退按钮添加到 MessageKit 中 MessageViewController 的顶部。但是,后退按钮的 UIBarButtonItem 无法显示。下面是我的代码 func
我正在尝试在我的应用程序中设置 MessageKit。我一直在研究并试图解决这个问题一个星期但没有运气。我在 module.modulemap 文件中收到一个错误 Header 'MessageKit
我一直在尝试使用 MessageKit 创建聊天应用程序,但是在创建 ViewController 并导入 MessageKit 时,出现如下错误 Cannot load underlying mod
我正在使用 MessageKit 3.0.0-swift5 分支进行聊天。单击该消息,我将显示 ViewController。当 Viewcontroller 被关闭时,我无法访问 InputBar。
我尝试使用下面的代码更改气泡轮廓,但始终显示黑色轮廓颜色。 func messageStyle(for message: MessageType, at indexPath: IndexPath, i
我使用 MessageKit 在我的 App 中创建 Chat。 在我以编程方式创建的ChatViewController中,我添加了rightBarButtonItem和用户图片。我想添加 func
我刚刚将我的代码更新到 swift 4.2 并修复了所有错误。现在我正在尝试使用“MessageKit”将信使放入我的应用程序中。一切都已更新,但我遇到了这些问题......现在它说的是 Messag
我正在使用 Swift 开发一个应用程序,并试图集成一个应用程序内消息系统。我计划使用“MessageKit”,但在将其添加到我的 podfile、运行“pod update”并重新运行我的应用程序后
我是一名优秀的程序员,十分优秀!