消息多选

从 IMKit SDK 2.9.0 版本开始,支持会话中长按消息后,显示消息多选功能,可以自定义点击事件

1、开发者在长按消息后出现更多选项,能够多选消息,SDK 默认实现多选消息删除功能

2、通过下面属性可设置会话页面多选状态和初始状态

/*!
 会话页面消息是否可编辑选择,如果为 YES,消息 cell 会变为多选样式,如果为 NO,页面恢复初始状态。
 */
@property(nonatomic, assign) BOOL allowsMessageCellSelection;

3、如果需要修改 SDK 内置消息是否允许多选,可通过在会话页面重写下面方法,修改消息 cellallowsSelection 属性,自定义消息如果允许多选,也可以设置此属性。

参数 类型 说明
cell RCMessageBaseCell 消息Cell
indexPath NSIndexPath 该Cell对应的消息Cell数据模型在数据源中的索引值
//RCConversationViewController

/*!
 即将显示消息Cell的回调

 @discussion 您可以在此回调中修改Cell的显示和某些属性。
 */
- (void)willDisplayMessageCell:(RCMessageBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath;
//RCMessageBaseCell

/*!
 是否允许选择
 */
@property(nonatomic) BOOL allowsSelection;

4、进入多选状态后,底部的视图为:

//RCConversationViewController

/*!
 消息编辑选择的状态下页面底部出现的工具视图
 */
@property(nonatomic, strong) UIToolbar *messageSelectionToolbar;

如果开发者想添加对多选消息的操作事件,如转发、收藏等,可以在 viewDidLoad 中 通过给 messageSelectionToolbar 添加UIBarButtonItem 的方式添加事件。

5、通过下面属性拿到选择的消息数据

//RCConversationViewController

/*!
 已经选择的所有消息
 @discussion 只有在 allowsMessageCellSelection 为 YES,才会有有效值
 */
@property(nonatomic, strong, readonly) NSArray<RCMessageModel *> *selectedMessages;

6、关于导航左右按钮如果想要自定义,可以重写会话页面下面方法,可以参考 Demo 里面这个方法的重写

//RCConversationViewController

/*!
 更新导航栏返回按钮中显示的未读消息数

 @discussion 如果您重写此方法,需要注意调用 super。
 */

- (void)notifyUpdateUnreadMessageCount;

7、参考官网 SealTalk 开源项目的会话页面 RCDChatViewController, 搜“消息多选功能”,看相关多选功能代码