iOS---融云即时通讯---自定义消息

iOS---融云即时通讯---自定义消息,第1张

注册消息

注册消息共分为四步。

(1)自定义消息集成自RCMessageContent

(2)遵循RCMessageCoding协议

RCMessageCoding 主要有三个春哗功能:

摘要

(3) 内容摘要协议

协议原型:

RCMessageContentView 主要有一个功能:

设置消息摘要:

开发者在进行完自定义消息类后,需要在 SDK init 之后,注册此自定义消息类。

开发者可根据自己的业务需求是否需要显示用户信息来选择继承消息 Cell。

类名:

1

结构图:

控件需要添加在 baseContentView 上,建议扒薯行在 baseContentView 上方预留 10

类名:

1

结构图:

控件需要添加在 messageContentView 上,根据需求在画 Cell 视图布局的时候调整 messageContentView 的 frame ,如果是接收方,只需要修改 messageContentView 的 width 和 height ,如果是发送方,需要修改 messageContentView 的 x 、 width 和 height 。

开发者需要在 Cell 的初始化中布局,并重写下面方法来返回 Cell 的 Size 。当显示自定义消息时,必须实现该方法来返回 Cell 的 Size 。

注册消息 Cell

SDK 需要开发者在会话页面注册您定义的消息 Cell 并绑定您的消息类型

①在自定义cell中添加tap点击事件,

②实现tap事件,在tap事件中判断代理是否实现了如下方法,

③调用SDK中的cell点击事件回调

在如上方法中手洞添加自定义cell的点击事件

可以使用自定义的帆凳cell,然后往里面茄手放label,为label赋tag值,态纳旅通过tag值去获取label,然后获取label中的内容。

例:UILabel *textLabel = [cell viewWithTag:10]

NSString *text = textLabel.text

在IOS开发中,很多时候项目需求会有点击某一行,展开cell下面的cell,在此点击会收起;

这种实现方式很多,个人这缺含和里随便推荐一种实现方式:

1、在数据转模型的model里面添加一个属性, @property ( assign , nonatomic ) BOOL isOpen//是否展开

2、在对应的tableView层,- ( nullable UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section;方法下伏盯面生成View,并未其添加点击事件;点击事件方法如下:

在对应的tableView的dataSource方法中:

以及- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{  if ( self .dataList[indexPath.section].isOpen) {

  if ( self .dataList[indexPath.section].isOpen) {

//设置展开的cell

}else{

//设置没有展开的cell

}}

实现的方法和tableBView差不多,实现他的几个代理方法:

解释一下:传进来的item:代表他给你的model,根据这个model可以去获取上级model: clickpackagesModel*packageModel = [treeViewparentForItem:model]

同样可以根据model获取相应的cell: clickPackageCell*packagecell01 = (clickPackageCell*)[treeViewcellForItem:model]

有了上面两个方法,基本就能玩转三级展开和收起;

对于三级展开,大家还有什么好的想法亦或者好的框架没?欢老巧迎补充


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11975286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存