为消息中指定的字符或字符串改变字体颜色和添加点击。

针对消息中某些特定的字符或字符串,修改字体颜色和添加点击。
发布时间: 2016-05-05 12:01

回答:

1.下面代码举例,是为消息中的“[点击]”这个指定的字符串,改变了字体颜色,并且添加了 url,实现了点击。

2.url 可以是一个 http 的网址,也可以是自己规定的特殊字符,在点击的时候,会回调聊天页面的 - (void)didTapUrlInMessageCell:(NSString *)url model:(RCMessageModel *)model 方法,从这个方法里面可以取到点击的 url,自己去实现判断,去决定是 push 到这个网页,还是执行某个方法。


- (void)willDisplayConversationTableCell:(RCMessageBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath {

    RCMessageModel *msgModel = self.conversationDataRepository[indexPath.item];

        if ([cell isKindOfClass:[RCTextMessageCell class]]) {

            RCTextMessageCell *newCell = (RCTextMessageCell *)cell;

            RCTextMessage *msg = (RCTextMessage *)msgModel.content;

            if (newCell.textLabel.text.length > 3) {

                NSString *confirmString = @"[点击]";

                NSRange range = [msg.content rangeOfString:confirmString];

                if (range.length) {

                    NSDictionary *txtMsgAttributes = @{NSForegroundColorAttributeName:[UIColor blackColor],NSFontAttributeName:[UIFont systemFontOfSize:16]};

                    NSDictionary *attributes       = @{NSForegroundColorAttributeName:[UIColor blueColor],

                                     NSFontAttributeName:[UIFont systemFontOfSize:16]};

                    NSMutableAttributedString *muString = [[NSMutableAttributedString alloc] initWithString:msg.content];

                    [muString addAttributes:txtMsgAttributes range:NSMakeRange(0, msg.content.length)];

                    [muString addAttributes:attributes range:range];

                    NSTextCheckingResult *textCheckingResult = [NSTextCheckingResult linkCheckingResultWithRange:range URL:[NSURL URLWithString:@"http://www.baidu.com"]];

                    [newCell.textLabel.attributedStrings addObject:textCheckingResult];

                    newCell.textLabel.attributedText = muString;

                }

            }

        }

}