iOS TTTAttributedLabel复制

原创 2016年08月28日 22:06:57

对于试图类的第三方控件,一般情况下我是不喜欢使用cocoapods添加的,主要原因就是修改十分不便,稍一不慎就一朝回到解放前了。
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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

TYAttributedLabel(一) 初步使用

#import "ViewController.h" #import "TYAttributedLabel.h" #import "TYTextStorage.h" @interface ViewC...

富文本(TYAttributedLabel 简单,强大的属性文本控件(无需了解CoreText),支持图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示)

转自:https://github.com/12207480/TYAttributedLabel TYAttributedLabel 简单,强大的属性文本的控件(无需了解CoreText),支...

github上关于iOS的各种开源项目集合

UI 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件。SVPullToRefresh - 下拉刷新控件。MJRefresh - 仅需一行代码就...

常用iOS、Mac框架和库及常用中文开发博客

目录 UI 下拉刷新模糊效果AutoLayout富文本图表表相关隐藏与显示HUD与Toast对话框其他UI 动画 侧滑与右滑返回手势其他动画 网络相关 网络连接网络测试图像...

TTTAttributedLabel 使用方法 (可点击文字文本)

TTTAttributedLabel 库地址 https://github.com/TTTAttributedLabel/TTTAttributedLabelimport “ViewControlle...

TTTAttributedLabel 中的一些bug

由于项目需要要求使用可定制的label,初始方案是用TTTAttributedLabel 其中发现2个bug 1 lineHeightMultiple 小于 1 的时候,text的位...

TTTAttributedLabel

  • 2014-01-09 10:20
  • 17KB
  • 下载

TTTAttributedLabel

  • 2012-11-23 14:36
  • 37KB
  • 下载

TTTAttributedLabel链接点击和textView--前传

富文本的相关用法 TTTAttributedLabel 我从网上看过一种方法,但是最后在我的工程中无法实现,可能是自己的工程的问题吧。但是可以作为参考,这个方法附在最后以后可以看一看,现在我谈一谈我...

TTTAttributedLabel 如何将多个字符串高亮显示

TTTAttributedLabel进行多个字符串的高亮显示。 需要对每个字符串进行匹配,从而得到所有需要高亮的NSRange,然后利用NSMutableAttributedString对每个N...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)