【问题标题】:How can we detect if user press the "Send/Return" button on keyboard with MessageKit?我们如何检测用户是否使用 MessageKit 按下键盘上的“发送/返回”按钮?
【发布时间】:2021-12-29 15:57:38
【问题描述】:

我希望用户在按下键盘上的“发送”按钮时也能够发送消息。对于 textField,我知道可以通过 delagte 来实现。但是谁能指出我如何在 MessageKit 中做到这一点?我无法在这里找到合适的方法。 提前致谢!

【问题讨论】:

    标签: ios swift messagekit


    【解决方案1】:

    详细解释可以在MessageKit repo 上的example project 中找到。

    实现点击发送按钮发送消息的代码sn-p,如下所示:

    import UIKit
    import MessageKit
    import InputBarAccessoryView
    
    class MyViewController: MessagesViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
            messageInputBar.delegate = self //set the delegate to receive notifications from the `InputBarAccessoryView`
        }
    }
    
    extension MyViewController: InputBarAccessoryViewDelegate {
        @objc internal func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
            processInputBar(messageInputBar)
        }
        
        private func processInputBar(_ inputBar: InputBarAccessoryView) {
            let components = inputBar.inputTextView.components
            inputBar.inputTextView.text = String()
            inputBar.invalidatePlugins()
            inputBar.inputTextView.resignFirstResponder() // Resign first responder for iPad split view
            DispatchQueue.global(qos: .default).async {
                DispatchQueue.main.async { [weak self] in
                    guard let self = self else {return}
                    self.insertMessages(components)
                    self.messagesCollectionView.scrollToLastItem(animated: true)
                }
            }
        }
        
        private func insertMessages(_ data: [Any]) {
            for component in data {
                if let string = component as? String {
                    // Create a Message type and add it the the chat messages
                    // let message = Message(sender: currentUser, messageId: UUID().uuidString, kind: .text(string))
                }
                else if let image = component as? UIImage {
                    let item = ImageMediaItem(image: image)
                    // Create a Message type and add it the the chat messages
                    // let message = Message(sender: currentUser, messageId: UUID().uuidString, kind: .photo(item))
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2011-01-01
      • 2016-12-29
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      相关资源
      最近更新 更多