美文网首页
iOS 富文本点击事件

iOS 富文本点击事件

作者: 会写bug的程序媛 | 来源:发表于2017-02-15 14:04 被阅读0次

    //#import "ViewController.h"

    #define font 17

    @interface ViewController ()

    @property (nonatomic, strong) UITextView *textView;

    @property (assign, nonatomic) BOOL isSelect;

    @end

    @implementation ViewController

    - (void)viewDidLoad {

    [super viewDidLoad];

    _textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 200)];

    _textView.backgroundColor = [UIColor greenColor];

    _textView.textColor = [UIColor blackColor];

    [self.view addSubview:_textView];

    [self protocolIsSelect:self.isSelect];

    }

    - (void)protocolIsSelect:(BOOL)select {

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"请遵守以下协议《支付宝协议》《微信协议》《建行协议》《招行协议》《中国银行协议》《上海银行协议》"];

    [attributedString addAttribute:NSLinkAttributeName

    value:@"zhifubao://"

    range:[[attributedString string] rangeOfString:@"《支付宝协议》"]];

    [attributedString addAttribute:NSLinkAttributeName

    value:@"weixin://"

    range:[[attributedString string] rangeOfString:@"《微信协议》"]];

    [attributedString addAttribute:NSLinkAttributeName

    value:@"jianhang://"

    range:[[attributedString string] rangeOfString:@"《建行协议》"]];

    UIImage *image = [UIImage imageNamed:select == YES ? @"new_feature_share_true" : @"new_feature_share_false"];

    CGSize size = CGSizeMake(font + 2, font + 2);

    UIGraphicsBeginImageContextWithOptions(size, false, 0);

    [image drawInRect:CGRectMake(0, 2, size.width, size.height)];

    UIImage *resizeImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];

    textAttachment.image = resizeImage;

    NSAttributedString *imageString = [NSAttributedString attributedStringWithAttachment:textAttachment];

    [(NSMutableAttributedString *)imageString addAttribute:NSLinkAttributeName

    value:@"checkbox://"

    range:NSMakeRange(0, imageString.length)];

    [attributedString insertAttributedString:imageString atIndex:0];

    [attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:font] range:NSMakeRange(0, attributedString.length)];

    _textView.attributedText = attributedString;

    _textView.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor],

    NSUnderlineColorAttributeName: [UIColor lightGrayColor],

    NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};

    _textView.delegate = self;

    _textView.editable = NO;        //必须禁止输入,否则点击将弹出输入键盘

    _textView.scrollEnabled = NO;

    }

    - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {

    if ([[URL scheme] isEqualToString:@"jianhang"]) {

    NSLog(@"建行支付---------------");

    return NO;

    } else if ([[URL scheme] isEqualToString:@"zhifubao"]) {

    NSLog(@"支付宝支付---------------");

    return NO;

    } else if ([[URL scheme] isEqualToString:@"weixin"]) {

    NSLog(@"微信支付---------------");

    return NO;

    } else if ([[URL scheme] isEqualToString:@"checkbox"]) {

    self.isSelect = !self.isSelect;

    [self protocolIsSelect:self.isSelect];

    return NO;

    }

    return YES;

    }

    - (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

    }

    @end

    相关文章

      网友评论

          本文标题:iOS 富文本点击事件

          本文链接:https://www.haomeiwen.com/subject/qstgettx.html