iOS TTTAttributedLabel复制
2016-08-28 22:06
826 查看
对于试图类的第三方控件,一般情况下我是不喜欢使用cocoapods添加的,主要原因就是修改十分不便,稍一不慎就一朝回到解放前了。
TTTAttributedLabel是一个我特别喜欢的第三方label控件,可以替换UILabel使用,通过它可以很方便的计算高度,识别内容中的地址、链接、电话等内容,只要设置代理并实现相关delegate方法即可支持相关的单击、双击、长按操作。
这篇文章并不是主要介绍TTTAttributedLabel用法的,不过demo里还是有少许说明,通过它你可以了解TTTAttributedLabel的基本用法。
由于工作需要,我在TTTAttributedLabel源文件的基础上做了少许修改以便使它支持复制操作操作,并且能够根据需要响应自定义操作。
1、添加的两个property
2、添加的三个代理方法
<< – 添加除去“复制”之外的自定义操作你需要修改这些内容 – >>
1、首先按下control+6 输入“longPressGestureDidFire”找到该方法
2、最后关系到UIMenuController是否能正常显示的问题
同样,按下control+6两个键,输入方法名,找到下面的方法
通过上面的内容,相信你一定能顺利的构建自己想要的结果了吧。
demo地址:https://github.com/NSSONGMENG/Practice/tree/master/TTTAttributedabel
最后附上效果图
![](http://img.blog.csdn.net/20160828220243628)
![](http://img.blog.csdn.net/20160828220221690)
如果你想了解UIMenuController的用法,这里有篇不错的文章仅供参考:
http://www.jianshu.com/p/ddd59867909a
TTTAttributedLabel是一个我特别喜欢的第三方label控件,可以替换UILabel使用,通过它可以很方便的计算高度,识别内容中的地址、链接、电话等内容,只要设置代理并实现相关delegate方法即可支持相关的单击、双击、长按操作。
这篇文章并不是主要介绍TTTAttributedLabel用法的,不过demo里还是有少许说明,通过它你可以了解TTTAttributedLabel的基本用法。
由于工作需要,我在TTTAttributedLabel源文件的基础上做了少许修改以便使它支持复制操作操作,并且能够根据需要响应自定义操作。
1、添加的两个property
/// 长按手势下UIMenuController要展示的选项,如复制、收藏等 /// 复制方法内部已经实现,其他方法可自行添加 @property (nonatomic, assign) BOOL showMenuController; /// 当点击UIMenuController上相应的选项,可通过此回调返回操作对应的title,方便在外部进行操作 ///(不需要去实现复制相关操作,label内部已经实现) @property (nonatomic, copy) void(^callBackSelection)(NSString * title);
2、添加的三个代理方法
/// UIMenuController将要显示 /// label内部设置了淡蓝色作为底色,不满足需要的话可以修改或者通过此方法设置label的背景色,曾尝试过通过设置attributedText的背景色达到显示选项是修改文本背景色的目的,但是不起作用 - (void)attributedLabel:(TTTAttributedLabel *)label willShowMenuWithText:(id)text; /// UIMenuController将要隐藏 /// label内部还原为透明底色,不满足需要的话可在此方法中将label背景色进行设定 - (void)attributedLabel:(TTTAttributedLabel *)label willHideMenuWithText:(id)text; /// 双击文本调用此方法 /// 如果需要添加双击功能,实现此方法就无需再去额外添加gesture了 - (void)attributedLabel:(TTTAttributedLabel *)label didDoubleClickWithText:(NSAttributedString *)string;
<< – 添加除去“复制”之外的自定义操作你需要修改这些内容 – >>
1、首先按下control+6 输入“longPressGestureDidFire”找到该方法
/// 类似下面的复制,收藏和删除方法,对每个自定义方法添加一个UIMenuItem实例 /// 下面三个方法中不需要的可以找到该方法并删除,想添加的话可以按照这几个方法的形式进行添加 UIMenuItem * copyItem = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(copyText:)]; UIMenuItem * collectItem = [[UIMenuItem alloc] initWithTitle:@"收藏" action:@selector(collectAction:)]; UIMenuItem * deleteItem = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(deleteAction:)]; /// UIMenuController是个单例,无需alloc init [[UIMenuController sharedMenuController] setMenuItems:@[copyItem,collectItem,deleteItem]]; [[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview]; [[UIMenuController sharedMenuController] setMenuVisible:YES animated: YES];
2、最后关系到UIMenuController是否能正常显示的问题
同样,按下control+6两个键,输入方法名,找到下面的方法
/// 对于任何想添加UIMenuController的类都需要实现该方法,判断方法为所需方法,返回YES,否则返回NO /// 同样的,如果你添加了自定义方法,需要在这个方法里加以判断并返回YES - (BOOL)canPerformAction:(SEL)action withSender:(__unused id)sender{ if (action == @selector(copyText:) || action == @selector(collectAction:) || action == @selector(deleteAction:)){ return YES; } return NO; }
通过上面的内容,相信你一定能顺利的构建自己想要的结果了吧。
demo地址:https://github.com/NSSONGMENG/Practice/tree/master/TTTAttributedabel
最后附上效果图
如果你想了解UIMenuController的用法,这里有篇不错的文章仅供参考:
http://www.jianshu.com/p/ddd59867909a
相关文章推荐
- iOS Dev (4) 用TTTAttributedLabel创建变化丰富的UILabel
- iOS学笔记本45- TTTAttributedLabel 使用方法
- iOS TTTAttributedLabel 使用
- TTTAttributedLabel 使用
- TTTAttributedLabel 中的一些bug
- 【Swift】UITableViewCell 中 TTTAttributedLabel 超链接无法点击的问题
- TTTAttributedLabel 使用方法 (可点击文字文本)
- TTTAttributedLabel第三方使用(一段连续的字符串不同范围用不同字体和颜色)
- ios中label长摁复制
- TTTAttributedLabel使用介绍(转)
- TYAttributedLabel——简单,强大的iOS属性文本控件
- TTTAttributedLabel 使用方法
- 源码推荐(5.14):TYAttributedLabel简单易用的富文本,高仿iOS 系统计算器(基本功能)
- 将多个字符串高亮显示之TTTAttributedLabel
- TTTAttributedLabel 如何将多个字符串高亮显示
- TTTAttributedLabel颜色设置
- TTTAttributedLabel 使用方法
- TTTAttributedLabel 使用方法
- iOS 写一个自带复制功能的Label
- iOS开发中可复制文本的Label