这两天在做环信的消息回撤,在网上找了许久没有这种案例,之后官方的一些方法,但是自己做,还是需要花点时间去整理,所以我决定等我把这个做好之后,分享给大家,如果做的不好多多指教,谢谢~
首先要实现消息撤回就是两个步骤,一个是发送要回撤的透传消息 。一个是接收透传信息,删除要回撤的消息。
第一步 : ChatViewController.m 自己定义一个
1
|
UIMenuItem *_messageRetracementMenuItem;
|
第二步
这个方法里面添加一下撤回字段,我把整段都复制过来了,你们对一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
- ( void )showMenuViewController:(UIView *)showInView andIndexPath:( NSIndexPath *)indexPath messageType:(EMMessageBodyType)messageType {
if ( self .menuController == nil ) {
self .menuController = [UIMenuController sharedMenuController];
}
if (_deleteMenuItem == nil ) {
_deleteMenuItem = [[UIMenuItem alloc] initWithTitle:@ "删除" action: @selector (deleteMenuAction:)];
}
if (_copyMenuItem == nil ) {
_copyMenuItem = [[UIMenuItem alloc] initWithTitle:@ "复制" action: @selector (copyMenuAction:)];
}
if (_transpondMenuItem == nil ) {
_transpondMenuItem = [[UIMenuItem alloc] initWithTitle:@ "转发" action: @selector (transpondMenuAction:)];
}
if (_messageRetracementMenuItem == nil ) {
_messageRetracementMenuItem = [[UIMenuItem alloc] initWithTitle:@ "撤回" action: @selector (messageRetracementMenuAction:)];
}
NSString *loginUsername = [[EMClient sharedClient] currentUsername];
id <imessagemodel> model = [ self .dataArray objectAtIndex: self .menuIndexPath.row];
if (messageType == EMMessageBodyTypeText) {
if ([loginUsername isEqualToString:model.message.from]) {
[ self .menuController setMenuItems:@[_copyMenuItem, _deleteMenuItem,_transpondMenuItem,_messageRetracementMenuItem]];
} else {
[ self .menuController setMenuItems:@[_copyMenuItem, _deleteMenuItem,_transpondMenuItem]];
} } else if (messageType == EMMessageBodyTypeImage){
|