您的位置:首页 > 其它

textView的布局和点击事件

2015-11-18 14:17 253 查看
// - 设置 textView 不可以编辑

        textView.editable =NO;

// - 设置文字的内边距

        textView.textContainerInset =UIEdgeInsetsMake(0,
-5,0, -5);

// - 设置 textView 不可以滚动

        textView.scrollEnabled =NO;

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    //
触摸对象

    UITouch *touch = [touches
anyObject];

    

    //
触摸点

    CGPoint point = [touch
locationInView:self];

    

    NSArray *specials = [self.attributedTextattribute:@"specials"atIndex:0effectiveRange:NULL];

    BOOL contains =
NO;

    

    for (HWSpecial *specialin specials) {

        self.selectedRange = special.range;

        // self.selectedRange --影响--> self.selectedTextRange

        //
获得选中范围的矩形框

        NSArray *rects = [selfselectionRectsForRange:self.selectedTextRange];

        //
清空选中范围

 
10d8a
      self.selectedRange =NSMakeRange(0,0);

        

        for (UITextSelectionRect *selectionRectin rects) {

            CGRect rect = selectionRect.rect;

            if (rect.size.width ==0 || rect.size.height
==0) continue;

            

            if (CGRectContainsPoint(rect, point)) {//
点中了某个特殊字符串

                contains = YES;

                break;

            }

        }

        

        if (contains) {

            for (UITextSelectionRect *selectionRectin rects) {

                CGRect rect = selectionRect.rect;

                if (rect.size.width ==0 || rect.size.height
==0) continue;

                

                UIView *cover = [[UIViewalloc]
init];

                cover.backgroundColor = [UIColorgreenColor];

                cover.frame = rect;

                cover.tag =
HWStatusTextViewCoverTag;

                cover.layer.cornerRadius =5;

                [self
insertSubview:cover atIndex:0];

            }

            

            break;

        }

    }

    

   
// 在被触摸的特殊字符串后面显示一段高亮的背景

}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25
* NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

        [self touchesCancelled:toucheswithEvent:event];

    });

}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

{

   
// 去掉特殊字符串后面的高亮背景

    for (UIView *childin
self.subviews) {

        if (child.tag ==HWStatusTextViewCoverTag) [child
removeFromSuperview];

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: