優(yōu)化環(huán)信聊天信息點(diǎn)擊跳轉(zhuǎn)其他控制器

注:從我的CSDN博客轉(zhuǎn)入

這個(gè)需求真心把我郁悶了半天,很少見要從聊天信息的文本跳轉(zhuǎn)到原生的請(qǐng)求界面去

方案1:---有BUG -不建議采取此方式
1.找到EMChatTextBubbleView.m

2.此處是環(huán)信的文本點(diǎn)擊事件,再次獲取擴(kuò)展字段,進(jìn)行判斷是否匹配,匹配成功發(fā)送通知

-(void)bubbleViewPressed:(id)sender  
{  
  
    UITapGestureRecognizer *tap = (UITapGestureRecognizer *)sender;  
    CGPoint point = [tap locationInView:self];  
    CFIndex charIndex = [self characterIndexAtPoint:point];  
      
      
    [self highlightLinksWithIndex:NSNotFound];  
    
      
    NSDictionary *extTest = self.model.message.ext;  
    NSLog(@"文本消息%@",extTest);  
    NSString * extString= [NSString stringWithFormat:@"%@",[extTest objectForKey:@"type"]];  
  
    if([extString isEqualToString:@"1"])  
    {  
          
        [[NSNotificationCenter defaultCenter] postNotificationName:@"jumpUserRquestNotification"  
                                                            object:nil];  
          
    }  
    for (NSTextCheckingResult *match in _urlMatches) {  
          
        if ([match resultType] == NSTextCheckingTypeLink) {  
              
            NSRange matchRange = [match range];  
              
            if ([self isIndex:charIndex inRange:matchRange]) {  
                  
                [self routerEventWithName:kRouterEventTextURLTapEventName userInfo:@{KMESSAGEKEY:self.model, @"url":match.URL}];  
                break;  
            }  
        } else if ([match resultType] ==  NSTextCheckingTypeReplacement) {  
              
            NSRange matchRange = [match range];  
              
            if ([self isIndex:charIndex inRange:matchRange]) {  
                  
                [self routerEventWithName:kRouterEventMenuTapEventName userInfo:@{KMESSAGEKEY:self.model, @"text":match.replacementString}];  
                break;  
            }  
        }  
          
    }  
}  

3.前往ChatViewController.m ViewDidLoad里定義通知,監(jiān)聽方法

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pressbtn:) name:@"jumpUserRquestNotification" object:nil]; 

方案2:

1.消息界面箭頭所指的地方點(diǎn)擊跳轉(zhuǎn)


2.找到ChatViewController.m
方法定位:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{  
    if (indexPath.row < [self.dataSource count]) {  
        id obj = [self.dataSource objectAtIndex:indexPath.row];  
        if ([obj isKindOfClass:[NSString class]]) {  
            EMChatTimeCell *timeCell = (EMChatTimeCell *)[tableView dequeueReusableCellWithIdentifier:@"MessageCellTime"];  
            if (timeCell == nil) {  
                timeCell = [[EMChatTimeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MessageCellTime"];  
                timeCell.backgroundColor = [UIColor clearColor];  
                timeCell.selectionStyle = UITableViewCellSelectionStyleNone;  
            }  
              
            timeCell.textLabel.text = (NSString *)obj;  
            return timeCell;  
        }  
        else{  
            
              
            MessageModel *model = (MessageModel *)obj;  
            PopAccount *accuount = [PopAccountTool account];  
            NSString *cellIdentifier = [EMChatViewCell cellIdentifierForMessageModel:model];  
            EMChatViewCell *cell = (EMChatViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
//此處給cell添加點(diǎn)擊方法addTarget:self action:@selector(pressbtn:)  
  
            if (cell == nil) {  
                cell = [[EMChatViewCell alloc] initWithMessageModel:model reuseIdentifier:cellIdentifier addTarget:self action:@selector(pressbtn:)];  
                cell.backgroundColor = [UIColor clearColor];  
                cell.selectionStyle = UITableViewCellSelectionStyleNone;  
            }  
            if (model.isSender) {  
                 
                model.headImageURL = [NSURL URLWithString:accuount.facefile];  
  
            }else{  
                  
                model.headImageURL = [NSURL URLWithString:self.receiverHeaderUrl];  
                  
            }  
            cell.messageModel = model;  
            cell.tag = indexPath.row+1;  
              
              
            return cell;  
        }  
    }  
      
    return nil;  
}  

3.獲取環(huán)信提供的擴(kuò)展字段和我方服務(wù)器發(fā)出消息的擴(kuò)展字段進(jìn)行匹配

-(void)pressbtn:(id)sender{  
    
   
  MessageModel *model = [self.dataSource objectAtIndex:1];  
  NSDictionary *dicExt = model.message.ext;  
  NSString *extString = [NSString stringWithFormat:@"%@",[dicExt objectForKey:@"type"]];  

  if ([extString isEqualToString:@"1"]) {  
      RceiveViewController * rect = [[RceiveViewController alloc]init];  
      UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:rect];  
        
      [self presentViewController:nav animated:YES completion:nil];  
  }  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末访得,一起剝皮案震驚了整個(gè)濱河市隔盛,隨后出現(xiàn)的幾起案子跋选,更是在濱河造成了極大的恐慌志群,老刑警劉巖蒂胞,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秧秉,死亡現(xiàn)場(chǎng)離奇詭異仰禀,居然都是意外死亡甜攀,警方通過查閱死者的電腦和手機(jī)浑劳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門阱持,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魔熏,你說我怎么就攤上這事衷咽。” “怎么了蒜绽?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵镶骗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我躲雅,道長(zhǎng)卖词,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任吏夯,我火速辦了婚禮此蜈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘噪生。我一直安慰自己裆赵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布跺嗽。 她就那樣靜靜地躺著战授,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桨嫁。 梳的紋絲不亂的頭發(fā)上植兰,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音璃吧,去河邊找鬼楣导。 笑死,一個(gè)胖子當(dāng)著我的面吹牛畜挨,可吹牛的內(nèi)容都是我干的筒繁。 我是一名探鬼主播噩凹,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼毡咏!你這毒婦竟也來了驮宴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤呕缭,失蹤者是張志新(化名)和其女友劉穎堵泽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恢总,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡落恼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了离熏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戴涝,死狀恐怖滋戳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啥刻,我是刑警寧澤奸鸯,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站可帽,受9級(jí)特大地震影響娄涩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜映跟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一蓄拣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧努隙,春花似錦球恤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躬存,卻和暖如春张惹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岭洲。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工宛逗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盾剩。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓拧额,卻偏偏與公主長(zhǎng)得像碑诉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侥锦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,758評(píng)論 0 15
  • 由于最近接觸到的項(xiàng)目需要用到聊天功能进栽,關(guān)于聊天的SDK跟安卓同事統(tǒng)一,最終選擇了環(huán)信恭垦。在官方下載好SDK快毛,并研究了...
    十字云閱讀 4,732評(píng)論 22 56
  • 今天是大姨的生日,所以一大早就被家里微信群的紅包轟炸醒了番挺,感覺這種醒來的方式簡(jiǎn)直太幸福了唠帝,咔咔搶紅包。 ...
    巧琳的世界閱讀 111評(píng)論 0 1
  • 年少不認(rèn)真讀書玄柏,長(zhǎng)大惹來愁緒千絲襟衰。 有沒有那么一刻突然很后悔自己在該讀書的年紀(jì)卻選擇了偷懶。 正如前人所言“年少不...
    湯小米的小窩閱讀 224評(píng)論 0 1
  • 文/亦珺 那個(gè)一直亮著燈光的窗子 徹夜徹夜的響著呻吟 蓮無聲的垂首 這世間有億億萬萬朵蓮 卻只有一個(gè)觀世音菩...
    亦珺閱讀 319評(píng)論 0 7