gpt4 book ai didi

ios - MessageKit 不显示消息输入栏 Swift 5

转载 作者:行者123 更新时间:2023-11-29 05:27:20 25 4
gpt4 key购买 nike

所以这是 Controller 层次结构 tabBarController -> 一些 Controller 和聊天 channel Controller 。

这个聊天 channel Controller 也是一个导航 Controller 。当我选择行时,它会推送到 MessageViewController 类的聊天 Controller 。

我这里有 2 个问题,一个是小问题,一个是主要问题。

次要的一个是头像。

    func avatarSize(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> CGSize {
print("delegate method called")
return .zero
}

我在其中一个代表中将其设置为零,但它仍然显示。而且它也从不打印该语句。

主要的一个是输入栏根本没有显示。我的 pod 文件中已经有 InputBarAccessoryView和

messageInputBar.delegate = self as InputBarAccessoryViewDelegate

extension ChatViewController: InputBarAccessoryViewDelegate {

func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
print("text")
}

}

但什么也没显示。我也查了一下views没找到 chat view view hierachy

最佳答案

要解决这个问题,我必须:

导入InputBarAccessoryView

所以你不必这样做:

messageInputBar.delegate = self 作为InputBarAccessoryViewDelegate

并在 viewDidLoad() 中设置这些委托(delegate)(颜色可选)

        super.viewDidLoad()
guard let userId = Auth.auth().currentUser?.uid else{return}
Database.fetchUserWithUID(uid: userId) { (user) in
self.currentLogginUser = user
}
messageInputBar.delegate = self
maintainPositionOnKeyboardFrameChanged = true
messageInputBar.inputTextView.tintColor = .yellow
messageInputBar.sendButton.setTitleColor(.purple, for: .normal)

messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self
messagesCollectionView.messageCellDelegate = self

messageInputBar.leftStackView.alignment = .center
messageInputBar.setLeftStackViewWidthConstant(to: 50, animated: false)
getMessages()
}

那么如果使用实时数据库 - Firebase


func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
guard let recipient = self.recipient else{return}
guard let uid = Auth.auth().currentUser?.uid else{return}
let ref = Database.database().reference().child("messages")
let childRef = ref.childByAutoId()

let values = ["sender": uid, "text": text, "recipient": recipient.uid, "time": Date().timeIntervalSince1970.description]
childRef.updateChildValues(values) { (err, ref) in

if let err = err{
print(err)
return
}

let userMessageRef = Database.database().reference().child("user-messages").child(uid).child(recipient.uid)

//add chat id generated from AutoId
guard let messageId = childRef.key else{return}
userMessageRef.updateChildValues([messageId: 1])

let recipientMessageRef = Database.database().reference().child("user-messages").child(recipient.uid).child(uid)
recipientMessageRef.updateChildValues([messageId:1])
}
inputBar.inputTextView.text = ""

}
}


关于ios - MessageKit 不显示消息输入栏 Swift 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58034974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com