iostext添加点击事件_iOS开发小技巧 - label中的文字添加点击事件

Label中的文字添加点击事件

以前老师讲过类似的功能,自己懒得回头看了,找了很多第三方的,感觉这个小巧便利,作者只是扩展了分类,实现起来代码也少.先来个效果图

自己的项目,直接上代码

- (void)setTopicModel:(CYQTopicModel *)topicModel

{

_topicModel = topicModel;

NSArray *likeArr = self.topicModel.userLike;

if (!likeArr.count) return; // 没有点赞的直接返回

NSMutableArray *ranges = [NSMutableArray array]; // 特殊字符的Range集合,修改文字颜色用

NSMutableArray *actionStrs = [NSMutableArray array]; // 将要添加点击事件的字符串集合

NSString *string = @"";

for (int i=0; i

CYQAccount *account = likeArr[i];

// 拼接字符串

string = [string stringByAppendingString:account.userName];

[actionStrs addObject:account.userName];

if (i != likeArr.count - 1) {

string = [string stringByAppendingString:@","];

}

// 特殊字符的Range

NSRange range = [string rangeOfString:account.userName];

[ranges addObject:[NSValue valueWithRange:range]];

}

// 转换成富文本字符串

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];

[attrStr addAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14.f]} range:NSMakeRange(0, string.length)];

// 最好设置一下行高,不设的话默认是0

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];

style.lineSpacing = 0;

[attrStr addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, string.length)];

// 给指定文字添加颜色

for (NSValue *rangeVal in ranges) {

[attrStr addAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor]} range:rangeVal.rangeValue];

}

self.likeLabel.attributedText = attrStr;

// 给指定文字添加点击事件,并设置代理,代理中监听点击

[self.likeLabel yb_addAttributeTapActionWithStrings:actionStrs delegate:self];

}

代理中具体的事件没有处理,方法中的index参数跟模型集合一一对应,到时候直接拿到相应的模型来做事情就可以

// 弹窗的宏

#define ChaosAlertShow(messageText,buttonName) \

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:(messageText) \

delegate:nil cancelButtonTitle:(buttonName) otherButtonTitles: nil];\

[alert show];

#pragma mark - YBAttributeTapActionDelegate

- (void)yb_attributeTapReturnString:(NSString *)string range:(NSRange)range index:(NSInteger)index

{

NSString *message = [NSString stringWithFormat:@"点击了“%@”字符\nrange: %@\nindex: %ld \n跳转到\"%@\"的个人界面",string,NSStringFromRange(range),index,string];

ChaosAlertShow(message, @"取消");

CLog(@"%@",message);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubantu下安装Nginx

Nginx 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码…

Hadoop中的问题–何时无法交付?

Hadoop是很棒的软件。 它不是原始的,但肯定不能消除它的荣耀。 它建立在并行处理的基础上,这个概念已经存在了数十年。 Hadoop虽然从概念上来说并不是独创性的,但它显示了自由开放的力量(就像在啤酒中一样!&#xff09…

创建 dblink

目的:oracle中跨数据库查询 两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据解决:查询得知使用dblink(即database link 数据库链)实现过程:1、确定用户user_a有没有创…

C#静态常量和动态常量的区别

C#拥有两种不同的常量:静态常量(compile-time constants)和动态常量(runtime constants)。它们有不同的特性,错误的使用不仅会损失效率,还可能造成错误。相比之下,静态常量在速度上会稍稍快一些,但是灵活性却比动态常…

spring的钩子_高级java开发必须掌握的Spring接口——SmartLifecycle

有些场景我们需要在Spring 所有的bean 完成初始化后紧接着执行一些任务或者启动需要的异步服务。 常见有几种解决方案j2ee 注解 启动前PostConstruct 销毁前PreDestroy 基于j2ee 规范springboot 的 org.springframework.boot.CommandLineRunner springboot 特性前面我已经介绍过…

Java:对Java SE 6和Java SE 7的客户端和桌面部分的改进!

Java 6和Java 7中的客户端改进 了解有关Java SE 6和Java SE 7的客户端和桌面部分的改进,包括新的applet插件,Java Deployment Toolkit,成形和半透明的窗口,重量级-轻量级混合以及Java Web Start。 介绍 自2006年12月发布Java平台…

辨异 —— 行星 vs 恒星

star:恒星,planet:行星;1. 恒星 恒星是指宇宙中靠核聚变产生的能量而自身能发热发光的星体(比如太阳)。过去天文学家以为恒星的位置是永恒不变的,以此为名。但事实上,恒星也会按照一…

软件公司职责分配

岗位:项目经理 主要职责:1、 计划:a)项目范围、项目质量、项目时间、项目成本的确认。b)项目过程/活动的标准化、规范化。c)根据项目范围、质量、时间与成本的综合因素的考虑,进行项目的总体规划与阶段计划。d)各项计划得到上级领…

大型网站架构系列:负载均衡详解(4)

本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法。具体参考文章,详见最后的链接。 三、LVS负载均衡 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于19…

关于JavaFX的最常见问题

上周,我在斯德哥尔摩的Jfokus 2012上做了一个关于JavaFX的演讲,当时我意识到每次活动都会问三个问题。 似乎有一个普遍的兴趣,所以我尝试在这篇文章中回答他们(尽可能的说实话): iPad或其他移动设备上的Jav…

python中面向对象空间时间_python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)...

一、类先看一段代码:classPerson:animal 高级动物walk_way 直立行走 # 静态属性,静态变量,静态字段language 语言def __init__(self,name,age,work): # 函数 动态属性,方法#print(self)self.name nameself.ageageself.workworkdef…

Linux GRUB 引导Win 7 ---- error: invalid EFI file path

最近新买了个固态硬盘,先装了个Win 7系统,现在装的系统和以前装系统唯一的区别是引导不是以前的MBR,而是最新看似是个趋势的GPTUEFI方式。 win 7 装完啦,还是和以往的一样装 Ubantu (Ubantu 12.04),ubantu 引导磁盘扇…

其他位不变,具体位的赋值操作

GPIOC (GPIOC & 0xf0) | (Content[s_Index] & 0x0f);        //低四位赋值GPIOB (GPIOB & 0xc3) | ((Content[s_Index]>>2) & 0x3c);     //中间四位赋值 具体某一位置1或取反&#xff1a; 正确写法&#xff1a; 置1:GPIOC | (1<<i…

使用Spring AOP实现活动记录模式

在班级设计中&#xff0c;我们应就每个班级的职责分配做出决定。 如果我们选择的不错&#xff0c;系统将更易于理解&#xff0c;维护和扩展。 几乎我们所有的项目都有一个持久层&#xff0c;即关系数据库&#xff0c;文档存储或仅XML文件。 通常&#xff0c;您将使用DAO模式在业…

Java基础之反射

框架都要用到反射技术&#xff0c;反射都要用到一个类Class. java程序中的各个java类属于同一类事物&#xff0c;描述这类事物的java类名就是Class. 得到字节码的方式有三种&#xff1a; Date.class;new Date().getClass();Class.forName("java.lang.String");最后一…

php socketconnect连接失败_PHP设计模式之模板方法模式

模板方法模式&#xff0c;也是我们经常会在不经意间有会用到的模式之一。这个模式是对继承的最好诠释。当子类中有重复的动作时&#xff0c;将他们提取出来&#xff0c;放在父类中进行统一的处理&#xff0c;这就是模板方法模式的最简单通俗的解释。就像我们平时做项目&#xf…

linux系统硬件配置查看方法

一&#xff1a;查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如果觉得需要看的更加舒服 grep "model name" /proc/cpuinfo | cut -f2 -d: 二&#xff1a;查看内存 grep MemTotal /proc/meminfo grep MemT…

java String源码学习

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/**char数组用于字符的存储 */private final char value[];/** 缓存string的hash码 */private int hash; // Default to 0public String() {/**无参构造函数,打印值为&quo…

JBoss AS 7.1.0.Final“ Thunder”发布-Java EE 6 Full Profile认证!

在JBoss AS7上进行了大约一年的开发后&#xff0c;我们现已发布7.1.0.Final“ Thunder” &#xff01; 可从此处的通常位置下载该文件。 对于JBoss AS7团队来说&#xff0c;这是一个非常大的成就&#xff0c;我们为此版本感到非常自豪。 这个版本包含了7.1.0.CR1b的许多错误修复…

数据库建表练习(10.11作业)

转载于:https://www.cnblogs.com/HRZJ/p/5951897.html