QQ的聊天界面搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QQ的聊天界面搭建相关的知识,希望对你有一定的参考价值。

QQ聊天的简单的界面的搭建:

1.设置聊天界面的tableView

#pragma mark 设置tableview

- (void)settingTableView {

    self.tableView.backgroundColor = [UIColor colorWithRed:220/255.0 green:220/255.0 blue:220/255.0 alpha:1];

    

    self.tableView.dataSource = self;

    self.tableView.delegate = self;

    

    // 取消分割线

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    // 取消选中

    self.tableView.allowsSelection = NO;

}

2.监听键盘的弹出(通知机制)

// 监听键盘弹出

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeyboardWillChangeFrameNotification:) name:UIKeyboardWillChangeFrameNotification object:nil];

#pragma mark 弹出或隐藏键盘调用的方法

- (void)KeyboardWillChangeFrameNotification:(NSNotification *)noti {

    // 获取键盘信息

    NSDictionary *dict = noti.userInfo;

    // 获取当前键盘的frame

    CGRect keyBoardFrame = [dict[UIKeyboardFrameEndUserInfoKey] CGRectValue];

    // 计算键盘移动的距离

    CGFloat moveY = keyBoardFrame.origin.y - self.view.bounds.size.height;

    // 移动transform

    self.view.transform = CGAffineTransformMakeTranslation(0, moveY);

    // 滚动到最后一行

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.frameArr.count - 1 inSection:0];

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

}

 3.点击发送按钮的事件

#pragma mark 点击发送事件的通知

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    // 添加cell

    [self addMessageWithText:textField.text andMessageType:WDJMessagesTypeMe];

    [self addMessageWithText:@"洗洗睡吧" andMessageType:WDJMessagesTypeOther];

    // 清空textField内容

    textField.text = nil;

    return YES;

}

3.1 封装点击发送按钮后的tableView展示界面中添加cell的方法

// 封装添加cell的方法

- (void)addMessageWithText:(NSString *)text andMessageType:(WDJMessagesType)type {

    // 设置模型

    WDJMessages *message = [[WDJMessages alloc] init];

    // 设置属性

    NSDate *date = [NSDate date];

    // 时间格式

    NSDateFormatter *gs = [[NSDateFormatter alloc] init];

    gs.dateFormat = @"yyyy-MM-dd HH-mm";

    NSString *dateName = [gs stringFromDate:date];

    message.time = dateName;

    message.text = text;

    message.type = type;

    

    // 取出上一个模型

    WDJMessageFrame *lastFrame = [self.frameArr lastObject];

    message.hide = [lastFrame.message.time isEqualToString:message.time];

    // 设置frame模型

    WDJMessageFrame *frame = [[WDJMessageFrame alloc] init];

    frame.message = message;

    // 添加到数组模型中

    [self.frameArr addObject:frame];

    // 刷新数据

    [self.tableView reloadData];

    // 添加到最后一行

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.frameArr.count -1 inSection:0];

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

}

 4.设置文本输入框

#pragma mark 文本输入框

- (void)settingTextField {

    // 设置占位

    UIView *view = [[UIView alloc] init];

    view.frame = CGRectMake(0, 0, 8, 0);

    self.textField.leftView = view;

    // 设置左占位的显示模式

    self.textField.leftViewMode = UITextFieldViewModeAlways;

    // 设置代理

    self.textField.delegate = self;

}

以上是关于QQ的聊天界面搭建的主要内容,如果未能解决你的问题,请参考以下文章

QQ界面及简单操作实现

iOS浏览器不能打开手机QQ客服与指定用户聊天界面

Android 根据QQ号跳转到QQ聊天界面

QQ聊天界面模式切换

Android,iOS打开手机QQ与指定用户聊天界面

Android,iOS打开手机QQ与指定用户聊天界面