仿QQ艾特功能

news/2024/11/8 1:32:15/

模仿qq艾特功能

以下是使用方法


- (void)presentPersonListViewController {__weak typeof(self) weakSelf = self;//下面是写死的选中的人员,后续是人员列表回调for (int i = 0; i < 10; i++) {YYPersonItem *person = [[YYPersonItem alloc] init];person.name = [NSString stringWithFormat:@"张三+%d",i];NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:self.contentView.font.pointSize]};NSMutableArray *currentSelectedPersonItems = [[self.contentView.attributedText getCurrentAtPersonItems] mutableCopy];[currentSelectedPersonItems addObject:person];//这里可以判断去重...(根据自己需求情况而定)//将人的名字转化为NSTextAttachment[[YYTextAttachmentManager getInstance] transformTextWithTextView:self.contentView tickedPersonItems:currentSelectedPersonItems atAllPersons:nil canRepeat:NO needBack:self.needBack color:[UIColor colorWithHexString:@"#0099E6"] attributes:attributes completeBlock:^(NSMutableAttributedString *mutableAttributedString, NSRange selectedRange) {weakSelf.needBack = NO;weakSelf.contentView.attributedText = mutableAttributedString;weakSelf.contentView.selectedRange = selectedRange;[weakSelf textViewDidChange:weakSelf.contentView];}];}}//发送文案的时候,最终是从这里获取当前选中的人员
- (void)textViewDidChange:(UITextView *)textView {self.currentSelectedPersonItems = [NSMutableArray arrayWithArray:[self.contentView.attributedText getCurrentAtPersonItems]];DRLog(@"当前艾特的人%@",self.currentSelectedPersonItems);}- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{if ([text isEqualToString:@"@"]) {if (range.length > 0) {NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text];[self.contentView.textStorage replaceCharactersInRange:range withAttributedString:attributedString];}self.needBack = YES; //需要将手动输入的@删除__weak typeof(self) weakSelf = self;dispatch_async(dispatch_get_main_queue(), ^{[weakSelf presentPersonListViewController];});return YES;}if ([text isEqualToString:@"\n"]) {[self sendClick];return NO;}return YES;
}

源文件已上传


http://www.ppmy.cn/news/226080.html

相关文章

微调样本质量胜于数量 LIMA: Less Is More for Alignment

1、总体介绍 大型语言模型的训练分为两个阶段&#xff1a;&#xff08;1&#xff09;从原始文本中进行无监督的预训练&#xff0c;以学习通用的表征&#xff1b;&#xff08;2&#xff09;大规模的指令学习和强化学习&#xff0c;以更好地适应最终任务和用户的偏好。 作者通过…

【Linux多机多卡训练步骤三】两台Linux直连网线加快数据传输

要通过一根网线连接两台Ubuntu电脑并使它们能够进行Ping通&#xff0c;您可以按照以下步骤进行设置&#xff1a; 1.物理连接 使用一根网线将两台电脑连接起来。将一端插入一台电脑的网络端口&#xff0c;将另一端插入另一台电脑的网络端口。 2.IP地址设置 为每台电脑设置唯…

基于RPC协议的接口自动化测试可以用Python语言实现

基于RPC协议的接口自动化测试可以用Python语言实现。下面是实现步骤&#xff1a; 1、安装依赖库&#xff0c;如protobuf、grpc。 2、编写.proto文件定义接口参数和返回值。 3、使用protoc编译.proto文件生成Python代码。 4、编写客户端代码调用远程接口进行测试。 具体实现…

无人机航摄时航高与地面分辨率的关系

航高就是航摄时飞机的飞行高度&#xff0c;根据起算基准的不同可分为绝对航高与相对航高。相对航高就是无人机在飞行时相机相对于某一基准面的高度&#xff0c;是相对于作业区域内地面平均高程基准面的设计航高。一般来说&#xff0c;在其他因素不变的情况下&#xff0c;航高越…

无人机介绍以及测评推荐

无人驾驶飞机简称“无人机”&#xff0c;英文缩写为“UAV”&#xff0c;是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机&#xff0c;或者由车载计算机完全地或间歇地自主地操作。 想买无人机的可以参考这篇无人机测评&#xff0c;Best Drones With Cameras 与有人…

F450无人机组装与调试

文章目录 认识无人机零部件机架图片 电机电调螺旋桨飞控套件(包括飞控、LED信号灯&#xff0c;GPS模块&#xff0c;电源管理模块)遥控器及遥控器接收机电池护桨 确认工具清单组装过程1.组装机架2.组装电机判断电机正反选择螺丝组装电机连接电调 3.组装飞控、LED、接收机、电源管…

一些适合做自主无人机的机架

一些适合做自主无人机的机架&#xff0c;我心目中确实也是比较小然后灵活自如的。我后面也想这么自己做一台小的。本身四轴就是越大机动性越差。 https://blog.csdn.net/sinat_16643223/article/details/119617308 https://blog.csdn.net/sinat_16643223/article/details/10940…

如何才能做好企业内部客服知识管理?

企业内部客服知识管理是指企业通过对客户服务过程中所涉及的信息、知识和技能进行系统化、规范化、科学化、数字化的管理&#xff0c;提高企业内部客服人员的服务质量和效率&#xff0c;帮助企业提高客户满意度&#xff0c;增强客户黏性&#xff0c;提高企业的市场竞争力。本文…