iOS中 UITextView文本视图 技术分享

简介:  UITextView:  文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文。  UITextField的用处多,UITextView的用法也不少。

 UITextView:

 文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文。

 UITextField的用处多,UITextView的用法也不少。常见UITextView使用在APP的软件简介、内容详情显示

 小说阅读显示、发表空间内容输入、说说文本框、评论文本框等。UITextView的使用有它本身的代理方法,也有

 继承于父类的方法。本身的方法有从开始编辑到结束编辑的整个过程的监听,继承的方法主要是继承于

 UIScrollView的方法,因为关于滚动的控制都属于UIScrollView的。根据常用经验,个人添加了在有导航栏

 的情况下可能输入文本框是下移的修复方法和添加文字时内容显示自动滚动到UITextView底部的实现方法。

#import "TextViewController.h"

@interface TextViewController ()<UITextViewDelegate>
@property(nonatomic,retain)UILabel *placeholderLabel;
@property(nonatomic,retain)UITextView *textView;
@end

@implementation TextViewController
- (void)dealloc
{
    self.placeholderLabel = nil;
    self.textView = nil;
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //添加背景颜色
    self.view.backgroundColor = [UIColor cyanColor];
    //导航控制器名称
    self.navigationController.title = @"UITextView的创建与使用";
    
    
    //调用介绍TextView的相关属性
    [self configureTextView];
    
}


介绍TextView的相关属性

- (void)configureTextView{

    //创建TextView视图
    self.textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 80, self.view.frame.size.width - 80, 100)];
    //添加到父视图
    [self.view addSubview:self.textView];
    
    //修复文本框的偏移量(下移)
    self.automaticallyAdjustsScrollViewInsets = NO;
    //设置UITextView的属性
    //1.设置文本
//    self.textView.text = @"你好,我是小韩哥";
    //2.设置文字的对齐方式
    self.textView.textAlignment = NSTextAlignmentCenter;
    //3.设置文字字体相关属性
    self.textView.font = [UIFont systemFontOfSize:18];
    //等等和UITextField几乎是一样的
    
    //设置背景颜色
    self.textView.backgroundColor = [UIColor grayColor];
    //设置边框颜色和宽度
    self.textView.layer.borderColor = [[UIColor colorWithRed:200.0/255 green:50/255 blue:10/255 alpha:1] CGColor];
    self.textView.layer.borderWidth = 2;
    //7.设置编辑属性,是否允许编辑(为NO时,只用来显示,依然可以使用选择和拷贝功能)
    //    self.textView.editable = NO;
    self.textView.editable = YES;
    
    
    //模仿UITextField的placeholder属性
    //     在textViewDidBeginEditing和textViewDidEndEditing内写实现方法。
    
    self.placeholderLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, CGRectGetWidth(self.textView.frame), 20)];
    //将UILabel的背景颜色设置为透明颜色clearColor
    self.placeholderLabel.backgroundColor = [UIColor clearColor];
    //设置UILabel的textColor属性为灰色grayColor
    self.placeholderLabel.textColor = [UIColor grayColor];
    //设置UILabel的text属性为需要的提示文字
    self.placeholderLabel.text = @"请输入内容";
    //设置UILabel的font属性和self.textView.font一致
    self.placeholderLabel.font = self.textView.font;
    //将UILabel添加到self.textView图层上
    [self.textView addSubview:self.placeholderLabel];
    
    
    //添加按钮及监听
    UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];
    
    addButton.frame = CGRectMake(CGRectGetMaxX(self.textView.frame)+10, 80, 50, 30);
    
    addButton.backgroundColor = [UIColor lightGrayColor];
    
    [addButton setTitle:@"添加" forState:UIControlStateNormal];
    
    [addButton addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:addButton];
    
    //添加代理协议
    self.textView.delegate = self;
    [self.placeholderLabel release];
    [self.textView release];

}

#pragma mark- 按钮点击事件实现方法

- (void)btnClick:(UIButton*)sender{
    NSLog(@"添加内容:欢迎来到韩俊强的CSDN博客");
    
    self.textView.text = [self.textView.text stringByAppendingString:@"韩俊强的CSDN博客\n"];
    
    //输入文字时自动滚动到底部
    /*
     1.拼接字符串赋值给self.textView.text;
     2.计算NSRange自动滚动到底部。
     NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型
     */
    NSRange range = NSMakeRange([self.textView.text length]- 1, 1);
    [self.textView scrollRangeToVisible:range];
    
    //    [self.view endEditing:YES];
}

#pragma mark- 实现协议里的方法

//1、将要开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
    
    NSLog(@"将要开始编辑?");
    return YES;
}
//2、将要完成编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
    
    NSLog(@"将要结束编辑?");
    return YES;
}
//3、开始编辑
- (void)textViewDidBeginEditing:(UITextView *)textView{
    
    NSLog(@"开始编辑。");
    self.placeholderLabel.text = @"";
}
//4、完成编辑
- (void)textViewDidEndEditing:(UITextView *)textView{
    
    NSLog(@"结束编辑。");
    
    //模仿UTextField的placeholder属性
    if (self.textView.text.length == 0) {
        self.placeholderLabel.text = @"请输入内容";
    }else{
        self.placeholderLabel.text = @"";
    }
}
//5、将要改变内容
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    
    NSLog(@"将要改变内容?");
    
    return YES;
}
//6、内容完成改变,只有在内容改变时才触发,而且这个改变内容是手动输入有效,用本例中得按钮增加内容不触发这个操作
- (void)textViewDidChange:(UITextView *)textView{
    
    NSLog(@"改变内容。");
}
//7、内容被选中,几乎所有操作都会触发textViewDidChangeSelection,包括点击文本框、增加内容删除内容
- (void)textViewDidChangeSelection:(UITextView *)textView{
    
    NSLog(@"选中内容。");
}

#pragma mark- 回收键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    
    //    [self.view endEditing:YES];
    [self.textView resignFirstResponder];
}

最终效果:



目录
相关文章
|
6月前
|
iOS开发
iOS中如何显示后台返回的带有html标签的富文本字符串
iOS中如何显示后台返回的带有html标签的富文本字符串
62 0
|
自然语言处理 搜索推荐 iOS开发
iOS MachineLearning 系列(19)—— 分析文本中的问题答案
本篇文章将介绍Apple官方推荐的唯一的一个文本处理模型:BERT-SQuAD。此模型用来分析一段文本,并根据提供的问题在文本中寻找答案。需要注意,BERT模型不会生成新的句子,它会从提供的文本中找到最有可能的答案段落或句子。
197 0
iOS MachineLearning 系列(19)—— 分析文本中的问题答案
|
人工智能 自然语言处理 API
iOS MachineLearning 系列(10)—— 自然语言分析之文本拆解
本系列的前几篇文章介绍了iOS中有关图像和视频处理的API,视觉处理主要有Vision框架负责,本篇起,将介绍在iOS中Machine Learning领域相关的自然语言处理框架:NaturalLanguage。
182 0
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
372 0
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
|
iOS开发
ios贝塞尔曲线表格视图
x轴和y轴都是可自定义,曲线的值也是对应的值
90 0
ios贝塞尔曲线表格视图
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
139 0
|
前端开发 小程序 数据处理
iOS上传图片视图的封装:用法 【下篇】
iOS上传图片视图的封装:用法 【下篇】
251 0
iOS上传图片视图的封装:用法 【下篇】
|
前端开发 API 数据处理
iOS小知识:封装上传图片视图(支持删除和添加)
iOS小知识:封装上传图片视图(支持删除和添加)
230 0
iOS小知识:封装上传图片视图(支持删除和添加)
|
安全 iOS开发
iOS 筛选视图的隐藏方案
iOS 筛选视图的隐藏方案
163 0
iOS 筛选视图的隐藏方案
|
监控 iOS开发
iOS视图置顶方案
iOS视图置顶方案
159 0
iOS视图置顶方案