04环信聊天界面 - 发送聊天消息

本文详细介绍如何在iOS聊天应用中实现消息发送功能,包括监听用户输入、处理回车键发送消息、创建并发送EMMessage实例等关键步骤。

聊天界面布局完成,下面我们来完成发送消息功能。

连线设置textView的为聊天控制器。

然后监听textView文字的改变,如果用户有输入回车符,表示“发送”消息

#pragma mark - UITextViewDelegate
- (void)textViewDidChange:(UITextView *)textView
{
    //监听用户是否点击了键盘的"Send"按钮 -- 判断最后一个字符是否是换行符
    if ([textView.text hasSuffix:@"\n"]) {
        // 1.发送消息
        [self sendMessage:textView.text];
        
        // 2.清空textView中的文字
        textView.text = nil;
    }
}
具体发送消息的方法:
/**
 *  发送消息
 */
- (void)sendMessage:(NSString *)text
{
    // 0.准备创建消息实例需要的参数
    EMChatText *chatText = [[EMChatText alloc] initWithText:text];
    EMTextMessageBody *textBody = [[EMTextMessageBody alloc] initWithChatObject:chatText];
    
    // 1.创建一个消息实例
    EMMessage *msg = [[EMMessage alloc] initWithReceiver:self.buddy.username bodies:@[textBody]];
    
    // 2.发送消息
    [[EaseMob sharedInstance].chatManager asyncSendMessage:msg progress:nil prepare:^(EMMessage *message, EMError *error) {
        // 准备发送
    } onQueue:nil completion:^(EMMessage *message, EMError *error) {
        // 完成发送
    } onQueue:nil];
}
在上面方法里我们用到了好用的名称self.buddy.username,所以我们需要从联系人控制器里 传递好友模型到聊天控制来。

 1.在聊天控制器定义属性:

//
//  ChatViewController.h


#import <UIKit/UIKit.h>

@class EMBuddy;

@interface ChatViewController : UIViewController
/**
 *  好友
 */
@property(nonatomic,strong)EMBuddy *buddy;
@end
2.联系人控制器传递好友数据:
/**
 *  因为是通过连线的形式跳转到下一个界面
 *  所以要传递数据到下一个控制器在这个方法里
 */
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 往聊天控制器传递一个buddy
    id destVC = segue.destinationViewController;
    if ([destVC isKindOfClass:[ChatViewController class]]) {
        // 获取选中的行
        NSInteger selectedRow = [self.tableView indexPathForSelectedRow].row;
        
        // 传递"好友"数据给聊天控制器
        ChatViewController *chatVC = destVC;
        chatVC.buddy = self.buddyList[selectedRow];
    }
}
自此发送消息的功能完成,后面我们在处理怎么把消息显示到聊天界面的tableView里。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值