文本视图控件:UITextView

介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除、剪贴、复制、修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可以自动换行,而且带有滚动条,可以滚动查看其他无法显示的内容。
 
属性:

@property(nonatomic,assign) id<UITextViewDelegate> delegate;      //代理

@property(nonatomic,copy) NSString *text;                                //文本

@property(nonatomic,retain) UIFont *font;                                 //文本字体

@property(nonatomic,retain) UIColor *textColor;                         //文本颜色

@property(nonatomic) NSTextAlignment textAlignment;                //文本对齐方式

@property(nonatomic) NSRange selectedRange;                         //选中的文本区域

@property(nonatomic,getter=isEditable) BOOL editable;              //文本是否可以编辑

@property(nonatomic,getter=isSelectable) BOOL selectable ;       //文本是否可选择

@property(nonatomic) UIDataDetectorTypes dataDetectorTypes; //检测文本中数字和链接

@property(nonatomic) BOOL allowsEditingTextAttributes;           //是否允许编辑文本属性

@property(nonatomic,copy) NSAttributedString *attributedText ;//文本属性

@property(nonatomic,copy) NSDictionary *typingAttributes;     //文本属性类型字典

@property (readwrite, retain) UIView *inputView;                          //输入视图

@property (readwrite, retain) UIView *inputAccessoryView;            //输入域切换视图

@property(nonatomic,readonly) NSTextContainer *textContainer     //放置文本的区域容器

@property(nonatomic, assign) UIEdgeInsets textContainerInset;       //文本边距

@property(nonatomic,readonly) NSLayoutManager *layoutManager; //文本布局管理者

@property(nonatomic,readonly,retain) NSTextStorage *textStorage;//文本保存实例

@property(nonatomic, copy) NSDictionary *linkTextAttributes;       //文本链接属性字典

方法:

※设置文本滚动区域

- (void)scrollRangeToVisible:(NSRange)range;

※  初始化实例方法

- (instancetype)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer;

代理方法:

@protocol UITextViewDelegate <NSObject, UIScrollViewDelegate>

@optional

※点击进入文本将要开始编辑时触发的方法

- (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;

※是否呼叫文本视图的链接

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

(NSRange)characterRange;

※是否呼叫文本视图依附

- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange;

@end

通知:

UIKIT_EXTERN NSString * const UITextViewTextDidBeginEditingNotification;    //文本开始编辑通知

UIKIT_EXTERN NSString * const UITextViewTextDidChangeNotification;           //文本已经改变通知

UIKIT_EXTERN NSString * const UITextViewTextDidEndEditingNotification;      //文本结束编辑通知

举例如下:

创建文本视图控件实例

// 创建文本视图控件实例
UITextView *textView = [[UITextView alloc]init];

设置文本视图的frame

//设置文本视图的frame
textView.frame = CGRectMake(, , , );

设置文本视图的文本内容

//设置文本视图的文本
textView.text = @"Copyright (c) 2015年 bjsxt. All rights reserved,文本视图控件UITextView,ViewController.m";

设置文本视图的字体大小

//设置文本字体
textView.font = [UIFont systemFontOfSize:];

设置文本可以选中

    //设置文本可以选中
textView.selectable = YES;

设置文本可以编辑

//设置文本可以编辑
textView.editable = YES;

给文本视图加圆角边框

//给文本视图加圆角边框
textView.layer.borderColor = [[UIColor colorWithRed:230.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0]CGColor];
textView.layer.borderWidth = 3.0;
textView.layer.cornerRadius = 8.0f;
[textView.layer setMasksToBounds:YES];

设置代理

//设置代理
textView.delegate = self;

将控件添加到视图控制器的视图中

//添加控件到视图中
[self.view addSubview:textView];

以下是协议的方法:

#pragma mark -<UITextViewDelegate>
//※点击进入文本将要开始编辑时触发的方法
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
NSLog(@"shouldBeginEditing");
return YES;
} //※离开文本将要结束编辑时触发的方法
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
NSLog(@"ShouldEndEditing");
return YES;
} //※文本已经开始编辑时触发的方法
- (void)textViewDidBeginEditing:(UITextView *)textView
{
NSLog(@"DidBeginEditing");
} //※文本已经结束编辑时触发的方法
- (void)textViewDidEndEditing:(UITextView *)textView
{
NSLog(@"DidEndEditing");
} //※文本内容将要发生改变时触发的方法
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:
(NSString *)text
{
NSLog(@"shouldChangeTextInRange");
return YES;
} //※文本内容已经发生改变时触发的方法
- (void)textViewDidChange:(UITextView *)textView
{
NSLog(@"DidChange");
} //※文本内容已经选中时触发的方法
- (void)textViewDidChangeSelection:(UITextView *)textView
{
NSLog(@"DidChangeSelection");
}

演示截图如下:

内容被隐藏了一部分:                                                     拖动滑动条查看隐藏的部分内容:

        

开始选择文本功能(select)                                                             选中部分文本内容(edit)

       

添加内容(edit)

触发协议方法的执行结果如下:

当按钮点入文本视图时,触发的方法是:

-- ::41.624 文本视图控件UITextView[:] shouldBeginEditing
-- ::41.685 文本视图控件UITextView[:] DidBeginEditing
-- ::41.693 文本视图控件UITextView[:] DidChangeSelection

当编辑文本时(包括敲回车键)时,触发的方法是:

-- ::50.384 文本视图控件UITextView[:] shouldChangeTextInRange
-- ::50.386 文本视图控件UITextView[:] DidChangeSelection
-- ::50.386 文本视图控件UITextView[:] DidChange

当选中文本时,触发的方法是:

-- ::07.836 文本视图控件UITextView[:] DidChangeSelection

iOS:文本视图控件UITextView的详细使用的更多相关文章

  1. iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用

    动态风火轮视图控件:UIActivityIndicatorView   介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView.   类型: typedef N ...

  2. iOS:分段控件UISegmentedControl的详细使用

    分段控件:UISegmentedControl   功能:分段的控制.页面的切换等.   介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...

  3. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  4. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  5. iOS:UIImageView图像视图控件

    UIImageView:图像视图控件:    它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的 ...

  6. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  7. 无比迅速敏捷地开发iOS超精美控件

    目录 前言 设计 编码 PaintCode 前言 自从人生第一篇博客<iOS中的预编译指令的初步探究>问世以来 浏览量竟然达到了360多,(路过的大神勿笑!)这些浏览量使我兴奋异常但又令我 ...

  8. iOS基础UI控件介绍-Swift版

    iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...

  9. iOS开发--UIKit控件之UISearchBar(搜索栏)

    今天因为需求原因,需要用到搜索控件:之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者. 然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢 ...

随机推荐

  1. NOIP 2013 day2

    tags: 模拟 贪心 搜索 动态规划 categories: 信息学竞赛 总结 积木大赛 花匠 华容道 积木大赛 Solution 发现如果一段先单调上升然后在单调下降, 那么这一块的代价是最高的减 ...

  2. git clone命令

    从远程clone一个仓库 ...知识浅薄 git clone都发现貌似用的不顺 因为我有几个git账号 但是我也不知道就是git账号是怎么保存在终端上的 所以当我需要用一个新的github账号来clo ...

  3. Science14年的聚类论文——Clustering by fast search and find of density peaks

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 这是一个比较新的聚类方法(文章中没看见作者对其取名,在这里我姑且称该方法为local density clu ...

  4. Convolutional Neural Networks卷积神经网络

    转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经 ...

  5. (ubuntu) pip install scandir 时出现错误 fatal error: Python.h: No such file or directory

    安装 jupyter时遇到这个问题,在这里查到了解决方法,特记录一下. 解决方式为: 先安装 python-dev: $ sudo apt-get install python-dev 然后再安装需要 ...

  6. Ext 目录

    adapter:负责将里面提供第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库. build: 压缩后的ext全部源码(里面分类存放). docs: API帮助文档. exmaples ...

  7. KMS使用CLion作为IDE来调试

    KMS使用CLion作为IDE来调试,打开kms相应模块的目录,CLion自动识别相应的CMakeLists.txt. 然而会make失败,经搜索,看到Clion使用的自带的cmake,因此系统中安装 ...

  8. 用jquery实现文章自动生成二级目录

    前段时间有个同学问有没有办法在博客园上发一篇文章然后自动生成文章的目录.之前不知道该怎么做这几天看了些jquery之后觉得还是容易的. 一级目录 一级目录的思路很简单,找出作为一级标题的元素,在某个地 ...

  9. JSON APIs and Ajax

    1. 通过jQuery来绑定点击事件. 函数 $(document).ready()这个函数中的代码只会在我们的页面加载时候运行一次,确保执行js之前页面所有的dom已经准备就绪. 在$(docume ...

  10. 删除Kali Linux多余的系统架构

    删除Kali Linux多余的系统架构   现在大家通常安装的都是Kali Linux 64位操作系统,其架构为amd64.如果要安装运行32位的程序(如wine32),则必须添加32位架构i386. ...