【问题标题】:Swift MessageKit problems - running swift 4.2Swift MessageKit 问题 - 运行 swift 4.2
【发布时间】:2018-11-19 16:27:16
【问题描述】:

我刚刚将代码更新到 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())
    }

【问题讨论】:

    标签: swift messagekit


    【解决方案1】:

    你安装了 MessageInputBar 吗?你可以这样安装它

    pod 'MessageInputBar'
    

    由于 MessageKit 2.0.0 您必须安装 MessageInputBar

    【讨论】:

    • 如果MessageInputBar pod 需要使用MessageKit pod,似乎应该更新MessageKit 的podspec 以反映这种依赖关系。手动将依赖项添加到您自己的 Podfile 似乎是一种解决方法,而不是真正的解决方案。
    • @DávidPásztor 你说得对,我会仔细看看这个
    • 您好,我正在进行审核,我看到您想从问题中删除 MessageData 部分。为什么,它与问题中的其他错误无关?下次只需给作者评论并要求他们删除它!
    • 消息数据的错误是由于另一个模块的错误导入。此外,还有另一个堆栈溢出帖子
    • 对于 Carthage 用户,将其包含在您的购物车文件中:github "MessageKit/MessageInputBar"
    【解决方案2】:

    添加也对我有用

    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 = ""
        }
    }
    

    【讨论】:

      【解决方案3】:

      我也在视图控制器类中添加了这个

      import MessageInputBar

      【讨论】:

        猜你喜欢
        • 2019-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        相关资源
        最近更新 更多