JSQMessageViewController自定义发送按钮

时间:2016-08-09 10:16:35

标签: ios jsqmessagesviewcontroller

我正在构建一个消息传递应用程序,我使用JSQMessageViewController来呈现消息并且它非常棒。 现在我在尝试自定义发送按钮时遇到了一些问题:

基本上我想将左右BarButtonItem替换为带图像的自定义按钮。 经过几个小时的阅读和搜索,我现在已经走到了这一步:

button without text

button with text

如图所示,如果textField中没有文本,则取消原始发送按钮的语音按钮将被禁用,此行为不是我想要的。如何禁用此行为并使按钮始终可用?

这就是我自定义发送按钮的方式:

  UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
  [rightButton setBackgroundImage:[UIImage imageNamed:@"AudioButton@2x.png"] forState:UIControlStateNormal];
  self.inputToolbar.contentView.rightBarButtonItem = rightButton;

2 个答案:

答案 0 :(得分:1)

如果您希望按钮一直可用, 在“JSQMessagesInputToolbar.h”中找到此方法并在 OLD代码

中注释这些行
- (void)toggleSendButtonEnabled
{
BOOL hasText = [self.contentView.textView hasText];

//    if (self.sendButtonOnRight) {
//        self.contentView.rightBarButtonItem.enabled = hasText;
//    }

//    else {
//        self.contentView.leftBarButtonItem.enabled = hasText;
//    }

}
新JSQ代码中的

- (void)updateSendButtonEnabledState
{
 if (!self.enablesSendButtonAutomatically) {
    return;
}

BOOL enabled = [self.contentView.textView hasText];
//    switch (self.sendButtonLocation) {
//        case JSQMessagesInputSendButtonLocationRight:
//            self.contentView.rightBarButtonItem.enabled = enabled;
//            break;
//        case JSQMessagesInputSendButtonLocationLeft:
//            self.contentView.leftBarButtonItem.enabled = enabled;
//            break;
//        default:
//            break;
//    }
}

答案 1 :(得分:0)

如果您要更换rightBarButtonItem

中的自定义按钮,这将有效

在viewDidAppear

中添加此内容
[self.inputToolbar.contentView.rightBarButtonItem setEnabled:YES];

并覆盖textview委托

-(void)textViewDidChange:(UITextView *)textView;