UITextView添加超链接及屏蔽选中复制

由于业务需要搞个文字跳转网页,网上的版本很多都很复杂,记录个简单版本的.

1.首先创建个UITextView的子类.

如果需要滑动View可以把-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer注释取消.

@implementation UITextLinkView: UITextView

- (BOOL)canBecomeFirstResponder
{
    return NO;
}

- (UITextRange *)selectedTextRange{
    return nil;
}

-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer{
   取消所有手势,如果需要其他的可以打开注释.
   //  if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] ) {
     //   gestureRecognizer.enabled = NO;
   //}
   // [super addGestureRecognizer:gestureRecognizer];
}
@end

2.创建textView

_detailTextView = [UITextLinkView new]; 
_detailTextView.textAlignment = NSTextAlignmentLeft;
// 修改可点击文字的颜色
    _detailTextView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor redColor],NSUnderlineStyleAttributeName:@(1)}; 
    _detailTextView.editable = NO;
    _detailTextView.scrollEnabled = NO;
//让textVIew文字内容边距为0,便于设置约束.
    _detailTextView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);

3.添加文字

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
 paragraphStyle.lineSpacing = 2; // 行间距
NSString * contentStr = @"啦啦啦";
 NSString * jumpStr = @"点我跳转";
NSString * urlStr = @"http://www.baidu.com";
 contentStr = [ contentStr stringByAppendingString:jumpStr];
//这步是防止点击链接后如果没有文字,那么点击textVIew后面的空白区域也会跳转
   contentStr = [ contentStr stringByAppendingString:@" "];
 NSDictionary *attributes = @{
 NSForegroundColorAttributeName:[UIColor blackColor],
 NSParagraphStyleAttributeName:paragraphStyle};
 NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:contentStr attributes:attributes];
//添加跳转文字及跳转链接
         [attrStr addAttribute:NSLinkAttributeName value:urlStr range:[contentStr rangeOfString:jumpStr]];
 _detailTextView.attributedText = attrStr;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,033评论 3 119
  • 生活在这个世界,我们在不同的年龄、不同的人生阶段,有着不相同的状态与心理变化,这些状态和心理变化,会左右我...
    舒心主儿阅读 497评论 0 2
  • 梦魇再深也终会醒 而现实生活不会醒 恰好相反 醒着就是沉睡 彻底沉睡才会醒 ​​​ 浮生若梦 美也似梦 噩也似梦 ​​​
    米酒姑娘阅读 270评论 0 3
  • 2017.9.18。无为。焦点解决,分享第61天。我很欣赏下面的文字: 快乐是什么?快乐就是一种心理上...
    无为wyw阅读 543评论 0 1