123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- //
- // YJLAttributesLabel.m
- // Asteria
- //
- // Created by 王猛 on 2024/1/5.
- //
- #import "YJLAttributesLabel.h"
- @interface YJLTextView : UITextView
- @end
- @implementation YJLTextView
- - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
- {
- // 返回NO为禁用,YES为开启
- // 粘贴
- if (action == @selector(paste:)) return NO;
- // 剪切
- if (action == @selector(cut:)) return NO;
- // 复制
- if (action == @selector(copy:)) return NO;
- // 选择
- if (action == @selector(select:)) return NO;
- // 选中全部
- if (action == @selector(selectAll:)) return NO;
- // 删除
- if (action == @selector(delete:)) return NO;
- // 分享
- if (action == @selector(share)) return NO;
- return [super canPerformAction:action withSender:sender];
- }
- - (BOOL)canBecomeFirstResponder {
- return NO;
- }
- @end
- @interface YJLAttributesLabel()<UITextViewDelegate>
- @property (nonatomic , strong) YJLTextView *textView ;
- @property (nonatomic , strong) NSMutableArray *actionText ;
- @property (nonatomic , strong) NSMutableArray *actionRange ;
- @end
- @implementation YJLAttributesLabel
- - (void)setAttributesText: (NSMutableAttributedString *)text actionText: (NSMutableArray *)actionText actionRange:(NSMutableArray *)actionrange{
- self.textView.attributedText = text;
- self.actionText = actionText;
- self.actionRange = actionrange;
- }
- - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction {
-
- if ([self.actionRange containsObject:[NSString stringWithFormat:@"%ld",characterRange.location]]) {
- NSLog(@"%ld",characterRange.location);
- NSInteger index = [self.actionRange indexOfObject:[NSString stringWithFormat:@"%ld",characterRange.location]];
- self.YJLAttributesBlock(self.actionText[index]);
- return NO;
- }
- return YES;
- }
- - (instancetype)init {
- if (self == [super init]) {
- [self setupUI];
- [self configuration];
- }
- return self;
- }
- - (instancetype)initWithFrame:(CGRect)frame {
- if (self == [super initWithFrame:frame]) {
- [self setupUI];
- [self configuration];
- }
- return self;
- }
- - (void)configuration {
- self.userInteractionEnabled = YES;
- }
- - (void)setupUI {
- [self addSubview:self.textView];
- }
- - (void)layoutSubviews {
- self.textView.frame = self.bounds;
- }
- - (YJLTextView *)textView {
-
- if (_textView == nil) {
- _textView = [[YJLTextView alloc]init];
- _textView.backgroundColor = self.backgroundColor;
- _textView.textColor = self.textColor;
- self.textColor = [UIColor clearColor];
- _textView.font = self.font;
- _textView.scrollEnabled = NO;
- _textView.text = self.text;
- _textView.delegate = self;
- _textView.editable = NO;
- _textView.textAlignment = self.textAlignment;
- _textView.linkTextAttributes = @{NSForegroundColorAttributeName:ThemeColor};
- }
- return _textView;
- }
- @end
|