美文网首页
TextView 常用功能

TextView 常用功能

作者: aaa000 | 来源:发表于2016-09-06 10:21 被阅读319次

#import "ViewController.h"

@interface ViewController ()<UITextViewDelegate>
@property(nonatomic,strong)UITextView *textView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 100, self.view.bounds.size.width - 40, 100)];
    [self.view addSubview:self.textView];
    self.textView.backgroundColor = [UIColor orangeColor];
    self.textView.text = @"文本内容";
    self.textView.font = [UIFont systemFontOfSize:14];//文字大小
    self.textView.textAlignment = NSTextAlignmentLeft;//文本对其方式
    self.textView.textColor = [UIColor purpleColor];//文本颜色
    self.textView.editable = YES;//是否可以编辑
    self.textView.selectable = YES;//是否支持选中
    self.textView.delegate = self;//代理
    self.textView.dataDetectorTypes = UIDataDetectorTypeAll;//textView自动检测内部的电话号码 网站link email
    UIView *keyBoardView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)];
    keyBoardView.backgroundColor = [UIColor redColor];
    self.textView.inputView = keyBoardView;//在输入键盘上方添加一个view 可以在这个view 中添加需要的控件
}

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
//输入内容发生了改变
- (void)textViewDidChange:(UITextView *)textView;

- (void)textViewDidChangeSelection:(UITextView *)textView;

@end

textView 没有提示文字功能 模仿textField 给textView加一个提示信息

思路和原理: 放一个Label在textview 上一层 刚好覆盖在textview 输入的位置 判断textview中的文字是否为空 如果为空 将 label的hidden 设置为NO else 设置为 YES

 _placeHolderLab = [[UILabel alloc]initWithFrame:CGRectMake(self.textView.frame.origin.x+5, self.textView.frame.origin.y+4, 100, 25)];
    _placeHolderLab.text = @"请输入xxx,xxx";
    _placeHolderLab.font = _textView.font;
    _placeHolderLab.textColor = [UIColor lightGrayColor];
    [self.view addSubview:_placeHolderLab];
-(void)textViewDidChange:(UITextView *)textView{
    if (textView.text.hash == @"".hash) {
        self.placeHolderLab.hidden = NO;
    }else{
        if (self.placeHolderLab.hidden == NO) {
            self.placeHolderLab.hidden = YES;
        }
    }
}

UITextView 继承于 UIScrollView 所以 UIScrollView 有的特性 textview 都有
实现微信输入框中自动换行 超出四行后 可以滚动的效果

-(void)textViewDidChange:(UITextView *)textView{
    //计算当前textView有多高
    CGFloat height = ceilf([self.textView sizeThatFits:CGSizeMake(self.textView.bounds.size.width, MAXFLOAT)].height);
    NSLog(@"height = %.2f",height);
    // 计算最大高度 = (每行高度 * 总行数 + 文字上下间距)
    CGFloat f = ceil([UIFont systemFontOfSize:14].lineHeight * 5 + self.textView.textContainerInset.top + self.textView.textContainerInset.bottom);
    if (height < f) {
        self.textView.scrollEnabled = NO;
        [UIView animateWithDuration:0.25 animations:^{
            CGRect rect = self.textView.frame;
            rect.size.height = height;
            self.textView.frame = rect;
        }];
    }else{
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.02 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [UIView animateWithDuration:0.25 animations:^{
                self.textView.scrollEnabled = YES;
                textView.contentOffset = CGPointMake(0, textView.contentSize.height - textView.bounds.size.height);
            }];
        });
    }
}

相关文章

网友评论

      本文标题:TextView 常用功能

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