MessageKit:添加的输入栏按钮仅在我发送消息后出现

Posted

技术标签:

【中文标题】MessageKit:添加的输入栏按钮仅在我发送消息后出现【英文标题】:MessageKit: the added input bar button only appears after I sent a message 【发布时间】:2021-01-25 12:08:46 【问题描述】:

我正在使用 MessageKit 构建一个应用程序。

我在输入栏中添加了一个 InputBarItem,但是当视图首次出现时它没有出现。只有在我按下“发送”后,该项目才会出现。

下面是 ChatViewController 的一部分。知道为什么会这样吗?

谢谢!

class ChatViewController: MessagesViewController 
    
    ....

    override func viewDidLoad() 
        super.viewDidLoad()
        view.backgroundColor = .white
       ...
        
        messageInputBar.delegate = self
    
        setupConstraints()
    



extension ChatViewController: MessagesDataSource 
    ...



// MARK: - MessageInputBarDelegate

extension ChatViewController: InputBarAccessoryViewDelegate 

    @objc
    func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) 
        processInputBar(messageInputBar)
    

    private func makeButton(named: String) -> InputBarButtonItem 
        return InputBarButtonItem()
            .configure 
                $0.spacing = .fixed(10)
                $0.image = UIImage(systemName: named)?.withRenderingMode(.alwaysTemplate)
                $0.setSize(CGSize(width: 25, height: 25), animated: false)
                $0.tintColor = .blue
            
    
    
    func processInputBar(_ inputBar: InputBarAccessoryView) 
        let components = inputBar.inputTextView.components
        
        inputBar.inputTextView.text = String()
        let items = [
            makeButton(named: "plus")
        ]
        inputBar.setLeftStackViewWidthConstant(to: 36, animated: false)
        inputBar.setStackViewItems(items, forStack: .left, animated: false)
    



【问题讨论】:

【参考方案1】:

由于以下代码而发生 -

@objc
func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) 
    processInputBar(messageInputBar)

如果您在此处看到委托函数说 didPressSendButtonWith 并且您正在调用您的函数以在此处添加项目。因此,在按下发送后,您的函数会被调用,将项目添加到输入栏。

谢谢。

【讨论】:

以上是关于MessageKit:添加的输入栏按钮仅在我发送消息后出现的主要内容,如果未能解决你的问题,请参考以下文章

MessageKit 不显示消息输入栏 Swift 5

从使用 MessageKit 创建的 ChatViewController 推送其他 ViewController

迅速!仅在按下按钮时创建一个segue!标签栏控制器

如何在wordpress中制作联系表格调用另一个php文件

iOS - 仅在一个视图上隐藏导航栏?

在 inputBarAccessoryView 中按下发送后如何清除 MessageKit inputBar 中的文本