Swift MessageKit问题-运行swift 4.2

5
我刚刚升级了我的代码到Swift 4.2并修复了所有错误。现在我正在尝试使用'MessageKit'将一个信使放入我的应用程序中。一切都已经更新,但我遇到了这些问题... 现在它正在说对于MessagesInputBarDelegate

"未声明类型 'MessagesInputBarDelegate'"

还有

"未声明类型 'MessageInputBar'"

此外,

"参数标签 '(type:)' 与任何可用的重载不匹配"

"无法将'_?'的值转换为预期的参数类型'URL?"

未声明类型 'MessagesInputBarDelegate'

未声明类型 'MessageInputBar'

extension CustomerChatViewController: MessagesInputBarDelegate {

func messageInputBar(_ inputBar: MessageInputBar, didPressSendButtonWith text: String) {
    let message = Message(user: user, content: text)

    save(message)
    inputBar.inputTextView.text = ""
}

}

参数标签'(type:)'与任何可用重载不匹配

let cameraItem = UIBarButtonItem(type: .system)

无法将类型为'_?'的值转换为预期的参数类型'URL?'

let imageName = [UUID().uuidString, String(Date().timeIntervalSince1970)].joined()
    storage.child(channelID).child(imageName).putData(data, metadata: metadata) { meta, error in
        completion(meta?.downloadURL())
    }
3个回答

7
你已经安装了 MessageInputBar 吗?你可以像这样安装它。
pod 'MessageInputBar'

自从 MessageKit 2.0.0 版本以后,您需要安装 MessageInputBar

3
如果需要使用 MessageKit pod 中的 MessageInputBar pod,那么似乎应该更新 MessageKit podspec 以反映这种依赖关系。手动将依赖项添加到自己的 Podfile 中似乎是一种变通方法,而不是真正的解决方案。 - Dávid Pásztor
1
@DávidPásztor 你说得对,我会仔细看看这个问题。 - Julien Kode
嗨,我正在进行审查,并且我看到您想从问题中删除MessageData部分。为什么?它与问题中的其他错误无关吗?下次只需向作者发表评论并要求他们将其删除即可! - Maarten Bodewes
消息数据的错误是由于另一个模块的错误导入引起的。此外,还有其他关于此问题的堆栈溢出帖子。 - Julien Kode
对于使用Carthage的用户,请在您的Cartfile中包含以下内容:github "MessageKit/MessageInputBar" - Dylan

3

加上这个也对我有用

import InputBarAccessoryView


在viewDidLoad()中添加以下内容:
override func viewDidLoad() {
        super.viewDidLoad()
        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)

    }

调用委托方法:

extension ChatVC: MessageInputBarDelegate {

    func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
        guard let user = self.user else{return}
        guard let uid = Auth.auth().currentUser?.uid else{return}
        let ref = Database.database().reference().child("messages").child(uid).child("personal").child(user.uid)
        let values = ["sender": uid, "text": text, "recipient": user.uid]
        ref.updateChildValues(values)
        inputBar.inputTextView.text = ""
    }
}

0

我也在视图控制器类中添加了以下内容:

import MessageInputBar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接