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

来源:互联网 发布:centos yum配置 编辑:程序博客网 时间:2024/06/11 19:40

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

连线设置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里。


0 0
原创粉丝点击