JSQMessageViewController 自定义发送按钮
JSQMessageViewController customize send button
我正在构建一个消息传递应用程序,我使用 JSQMessageViewController 来呈现消息,它很棒。
现在我在尝试自定义发送按钮时遇到了一个小问题:
基本上我想将左右BarButtonItem替换为带有图像的自定义按钮。
经过几个小时的阅读和搜索,我现在已经知道了:
如图所示,如果文本字段中没有文本,则替换原始发送按钮的语音按钮将被禁用,这种行为不是我想要的。如何禁用此行为并使按钮始终可用?
这就是我自定义发送按钮的方式:
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
[rightButton setBackgroundImage:[UIImage imageNamed:@"AudioButton@2x.png"] forState:UIControlStateNormal];
self.inputToolbar.contentView.rightBarButtonItem = rightButton;
如果您希望按钮始终可用,
在 "JSQMessagesInputToolbar.h" 中找到此方法并在 旧代码
中注释这些行
- (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;
// }
}
如果您要替换 rightBarButtonItem
中的自定义按钮,这将起作用
在 viewDidAppear 中添加这个
[self.inputToolbar.contentView.rightBarButtonItem setEnabled:YES];
并覆盖 textview 委托
-(void)textViewDidChange:(UITextView *)textView;
我正在构建一个消息传递应用程序,我使用 JSQMessageViewController 来呈现消息,它很棒。 现在我在尝试自定义发送按钮时遇到了一个小问题:
基本上我想将左右BarButtonItem替换为带有图像的自定义按钮。 经过几个小时的阅读和搜索,我现在已经知道了:
如图所示,如果文本字段中没有文本,则替换原始发送按钮的语音按钮将被禁用,这种行为不是我想要的。如何禁用此行为并使按钮始终可用?
这就是我自定义发送按钮的方式:
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
[rightButton setBackgroundImage:[UIImage imageNamed:@"AudioButton@2x.png"] forState:UIControlStateNormal];
self.inputToolbar.contentView.rightBarButtonItem = rightButton;
如果您希望按钮始终可用, 在 "JSQMessagesInputToolbar.h" 中找到此方法并在 旧代码
中注释这些行- (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;
// }
}
如果您要替换 rightBarButtonItem
在 viewDidAppear 中添加这个
[self.inputToolbar.contentView.rightBarButtonItem setEnabled:YES];
并覆盖 textview 委托
-(void)textViewDidChange:(UITextView *)textView;